Node.js 全局事件

2018-02-16 14:51 更新

全局異常處理程序

任何全局未處理的異常都可以通過(guò)監(jiān)聽(tīng)進(jìn)程上的“uncaughtException”事件來(lái)攔截。

為了方便記錄錯(cuò)誤,使用錯(cuò)誤代碼退出此過(guò)程。

process.on("uncaughtException", function (err) {
   console.log("Caught exception: ", err);
   console.log("Stack:", err.stack); 
   process.exit(1); 

}); 
// Intentionally cause an exception, but don"t try/catch it. 
nonexistentFunc(); 
console.log("This line will not run."); 

如果任何事件發(fā)射器引發(fā)`error`事件,并且沒(méi)有為此事件預(yù)訂事件發(fā)射器的監(jiān)聽(tīng)器,則在進(jìn)程上也會(huì)引發(fā)`uncaughtError`事件。

退出

exit事件在進(jìn)程即將退出時(shí)發(fā)出。

在這一點(diǎn)上沒(méi)有辦法中止退出。事件循環(huán)已經(jīng)在拆卸,所以你不能在此時(shí)執(zhí)行任何異步操作。

process.on("exit", function (code) {
    console.log("Exiting with code:", code); 
}); 

process.exit(1); 

事件回調(diào)在進(jìn)程退出的退出代碼中傳遞。

這個(gè)事件最有用目的是用于調(diào)試和記錄。

信號(hào)

Node.js過(guò)程對(duì)象也支持UNIX的信號(hào)概念,這是一種進(jìn)程間通信的形式。

要在終端中處理Ctrl+C組合鍵,添加監(jiān)聽(tīng)器訂閱 SIGINT (信號(hào)中斷)事件,監(jiān)聽(tīng)器被調(diào)用,你可以選擇是否要退出進(jìn)程(process.exit)或繼續(xù)執(zhí)行。

以下代碼處理Control-C事件,并選擇繼續(xù)運(yùn)行并在五秒鐘后退出。

setTimeout(function () {
    console.log("5 seconds passed. Exiting"); 
}, 5000); 
console.log("Started. Will exit in 5 seconds"); 
process.on("SIGINT", function () {
    console.log("Got SIGINT. Ignoring."); 
}); 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)