node 常見異常處理

2021-09-09 08:58:16 字數 1776 閱讀 3874

// 每秒鐘列印一次時間,確保程式沒有奔潰

(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來...