有没有如何处理nodejs中未捕获的异常的指南

Is there any guide how to handle the uncaught exception in nodejs?

本文关键字:异常 nodejs 何处理 处理 有没有      更新时间:2023-09-26

最初,uncaughtException在我的代码中用于捕获所有未经处理的异常。

process.on('uncaughtException', function (err) {
  if ('stack' in err) {
    console.log(err.stack);
  }
});

然而这不是一个好方法,根据这篇文章,我们知道

`uncaughtException` is a very crude mechanism for exception handling and 
may be removed in the future.
And use `domains` instead. If you do use it, restart your application 
after every unhandled exception!
Do not use it as the node.js equivalent of On Error Resume Next. 

此外,模块forever是另一种好方法。

以下是我的问题:

  • On Error Resume Next是什么意思?
  • 有没有如何处理nodejs中未捕获的异常的指南?

On Error Resume Next是一个Visual Basic(VB.NET!)构造,它会导致忽略任何到达其范围的异常并继续执行。(需要明确的是,这是一个坏主意。它看起来像这样:

Sub Example()
    On Error Resume Next
    Dim x As String = Nothing
    Dim y As String = x.Substring(0, 5) ' Fails! Ignored! y is Nothing, probably
    Console.WriteLine(y) ' Execution continues
End Sub

这有点像在 PHP 中以 @ 开头的每个语句,作为另一个示例。

forever是重新启动脚本的正确方法,该脚本在发生未经处理的异常时不应终止。

引用自此

  • 应用程序不应有未捕获的异常。这显然是疯狂的。
  • 您应该让您的应用程序崩溃,找到未捕获的异常并修复它们。这显然是疯狂的。
  • 你应该默默地吞下错误。这是很多人做的事情,这很糟糕。
  • 你应该让你的应用程序崩溃,记录错误,然后用诸如upstart,forever或monit之类的东西重新启动你的进程。这是务实的。
  • 您应该开始使用域来处理错误。显然是要走的路,尽管这是Node的一个实验性功能。