Không có ích gì để bắt và ném như bạn thể hiện. Nó không làm bất cứ điều gì hữu ích ngoại trừ thêm mã và thực thi chậm. Vì vậy, nếu bạn sắp sửa .catch()
và đánh lại, bạn nên có điều gì đó mà bạn muốn làm trong đó .catch()
, nếu không, bạn chỉ nên xóa .catch()
hoàn toàn.
Điểm thông thường cho cấu trúc chung đó là khi bạn muốn thực thi một cái gì đó trong .catch()
ví dụ như ghi lại lỗi hoặc dọn dẹp một số trạng thái (như đóng tệp), nhưng bạn muốn chuỗi hứa tiếp tục khi bị từ chối.
promise.then(function(result){
}).catch(function(error) {
console.log(error);
throw error;
});
Trong một hướng dẫn, nó có thể chỉ để cho mọi người thấy họ có thể bắt lỗi ở đâu hoặc dạy khái niệm xử lý lỗi, sau đó sửa lại lỗi đó.
Một số lý do hữu ích cho việc bắt và trồng lại như sau:
- Bạn muốn ghi lại lỗi , nhưng vẫn giữ chuỗi lời hứa bị từ chối.
- Bạn muốn biến lỗi thành một số lỗi khác (thường để xử lý lỗi dễ dàng hơn ở cuối chuỗi). Trong trường hợp này, bạn sẽ tạo lại một lỗi khác.
- Bạn muốn thực hiện một loạt xử lý trước khi chuỗi hứa tiếp tục (chẳng hạn như tài nguyên đóng / miễn phí) nhưng bạn muốn chuỗi hứa tiếp tục bị từ chối.
- Bạn muốn có một vị trí để đặt điểm ngắt cho trình gỡ lỗi tại thời điểm này trong chuỗi hứa hẹn nếu có lỗi.
Tuy nhiên, việc bắt và lặp lại cùng một lỗi mà không có mã nào khác trong trình xử lý bắt không có ích gì cho việc chạy bình thường của mã.