簡體   English   中英

uncaughtException 后退出進程

[英]Exiting the process after uncaughtException

在我的 NodeJS 應用程序中,每當遇到未處理的異常時,我都希望進程退出。

但是,根據 NodeJS 的文檔,它似乎默認退出。 所以我的問題是——我的代碼中應該有這樣的東西嗎?

    process
        .on('uncaughtException', (err) => {
            log.error('uncaughtException:', err.message);
            log.error(err.stack);
            process.exit(1);
    });

還是我應該將process.exit(1)部分排除在外,因為它不需要?

需要process.exit(1)部分,默認情況下它不會退出,並且您的應用程序可能會以意外的 state 終止,因此您應該將process.exit(1)放入uncaughtException

但是,放置事件unhandledRejection也是一個好習慣(如果您在應用程序中使用Promise ),以便您更好地了解發生了什么。

process
  .on('unhandledRejection', (reason, p) => {
    console.error(reason, 'Unhandled Rejection at Promise', p);
  })
  .on('uncaughtException', err => {
    console.error(err, 'Uncaught Exception thrown');
    process.exit(1);
  });

此外作為旁注(達里奧提到,並在此處引用官方文檔,請參閱文檔

'uncaughtException' 的正確用法是在關閉進程之前同步清理分配的資源(例如文件描述符、句柄等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM