使用 Promise Chaining 進行非同步錯誤處理
使用非同步程式碼時,考慮如何有效處理錯誤至關重要。未捕獲的異常可能會使您的應用程式崩潰,因此制定適當的策略非常重要。
在所描述的場景中,使用拋出錯誤的 setTimeout 來建立 Promise。 Bluebird Promise 的 catch 處理程序不會捕獲此錯誤,因為它發生在非同步回呼中。
Promises 中的異常處理
Promises 可以捕獲在其中拋出的異常他們自己的回調函數。若要處理此類錯誤,您可以:
function getPromise() {
return new Promise(function(done, reject) {
setTimeout(done, 500);
}).then(function() {
console.log("hihihihi");
throw new Error("Oh no!");
});
}
這裡,錯誤在 then 回調中拋出,這確保了它會被 Promise 的 catch 處理程序捕獲。
非同步回呼的注意事項
重要的是要記住,Promise 不會捕獲不在其自身權限範圍內的非同步回呼的異常。要處理這些類型的錯誤,請考慮:
流氓非同步回調處理範例
要在Node.js 或瀏覽器中處理流氓非同步回調,您可以使用以下方法:
function getPromise() {
return new Promise(function(done, reject) {
setTimeout(function() {
try {
// Your rogue async callback here
console.log("hihihihi");
} catch (e) {
reject(e);
}
}, 500);
});
}
透過手動處理回呼中的任何異常,此方法可確保它們不會使您的應用程式崩潰。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3