// 每秒鐘列印一次時間,確保程式沒有奔潰
(function loop() , 1000) })() // 模擬同步**塊內出現異常
let syncerror = () => // 模擬非同步**塊內出現異常
let asyncerror = () => , 100)
}
1、try catch 方式
try catch (e)
console.log('異常**獲了,我可以繼續執行')
但是try catch方式無法處理非同步**塊內出現的異常,你可以理解為執行catch時,異常還沒有發生。
try catch (e)
2、callback方式
fs.mkdir('/dir', function (e) else
})
3、event 方式
let events = require("events");
//建立乙個事件監聽物件
let emitter = new events.eventemitter();
//監聽error事件
emitter.addlistener("error", function (e) );
//觸發error事件
emitter.emit("error", new error('出錯啦'));
4、promise 方式
new promise((resolve, reject) => catch(e) */ }) .then(() => ) .catch((e) => )
promise同樣無法處理非同步**塊中丟擲的異常
new promise((resolve, reject) => ) .then(() => ) .catch((e) => )
5、async/await 方式
async/await是基於promise的,所以promise無法捕獲的異常,async/await同樣無法捕獲
var sleep = function (time) )
}; (async function () catch (e)
})()
6、process方式
process方式可以捕獲任何異常(不管是同步**塊中的異常還是非同步**塊中的異常)
process.on('uncaughtexception', function (e) );
asyncerror() syncerror()
7、domain方式
process方式雖然可以捕獲任何型別的異常,但是process太過笨重,除了記錄下錯誤資訊,其他地方不適合使用,domain這個也可以處理任何型別異常的模組,顯然是乙個不錯的選擇。
let domain = require('domain')
let d = domain.create()
d.on('error', function (e) )
d.run(asyncerror)
d.run(syncerror)
node的異常處理
node是單執行緒執行環境,一旦丟擲的異常沒有 獲,就會引起整個程序的崩潰。所以,node的異常處理對於保證系統的穩定執行非常重要。node的處理方法 1 使用throw語句丟擲異常 常用的捕獲異常方式,結構無法捕獲非同步執行的 丟擲的異常。trycatch err 非同步 try,0 catch ...
Python常見異常型別處理
目錄 前言 開發人員在編寫程式時,難免會遇到錯誤,有的是編寫人員疏忽造成的語法錯誤,有的是程式內部隱含邏輯問題造成的資料錯誤,還有的是程式執行時與系統的規則衝突造成的系統錯誤,等等。總的來說,編寫程式時遇到的錯誤可大致分為 2 類,分別為語法錯誤和執行時錯誤。語法錯誤,也就是解析 時出現的錯誤。當 ...
Android開發 之 常見異常處理
1 pen failed eisdir is a directory 這個異常是因為我在sd卡中建立目錄資料夾的時候,應該一層一層的建立資料夾 例如 我要建立 mnt sdcard zhufu apkbus 這樣的路徑資料夾,其中 zhufu 和 apkbus 資料夾都是不存在的,我需要mkdir來...