Jak pokazujesz, nie ma sensu łapanie i rzucanie nago. Nie robi nic użytecznego poza dodawaniem kodu i powolnym wykonywaniem. Tak więc, jeśli zamierzasz .catch()
rzucić ponownie, powinno być coś, co chcesz zrobić, w .catch()
przeciwnym razie powinieneś po prostu .catch()
całkowicie usunąć .
Typowym punktem tej ogólnej struktury jest sytuacja, gdy chcesz wykonać coś w .catch()
pliku, na przykład zarejestrować błąd lub wyczyścić jakiś stan (na przykład zamknięte pliki), ale chcesz, aby łańcuch obietnic był kontynuowany jako odrzucony.
promise.then(function(result){
}).catch(function(error) {
console.log(error);
throw error;
});
W samouczku może to być tylko po to, aby pokazać ludziom, gdzie mogą wyłapać błędy lub nauczyć koncepcji obsługi błędu, a następnie ponownie go zgłosić.
Niektóre z przydatnych powodów łapania i ponownego rzucania są następujące:
- Chcesz zarejestrować błąd , ale zachować łańcuch obietnic jako odrzucony.
- Chcesz przekształcić błąd w inny błąd (często w celu łatwiejszego przetwarzania błędów na końcu łańcucha). W takim przypadku należy ponownie zgłosić inny błąd.
- Chcesz wykonać kilka operacji przetwarzania, zanim łańcuch obietnic będzie kontynuowany (na przykład zamknięte / wolne zasoby), ale chcesz, aby łańcuch obietnic pozostał odrzucony.
- Potrzebujesz miejsca, w którym umieści punkt przerwania dla debugera w tym punkcie łańcucha obietnic, jeśli wystąpi awaria.
Ale zwykłe przechwycenie i ponowne zgłoszenie tego samego błędu bez żadnego innego kodu w procedurze obsługi catch nie robi nic użytecznego dla normalnego działania kodu.