【发布时间】:2015-10-28 15:13:43
【问题描述】:
Express.js 关于未捕获异常的行为对我来说是相当随机的。有时,请求返回代码500 内部错误并继续运行,有时它会崩溃[nodemon] app crashed - waiting for file changes before starting...。后面什么时候发生?我可以通过返回所有带有代码500 的错误请求来阻止它崩溃吗?
【问题讨论】:
Express.js 关于未捕获异常的行为对我来说是相当随机的。有时,请求返回代码500 内部错误并继续运行,有时它会崩溃[nodemon] app crashed - waiting for file changes before starting...。后面什么时候发生?我可以通过返回所有带有代码500 的错误请求来阻止它崩溃吗?
【问题讨论】:
这些错误属于两个不同的类别。
第一个错误500 internal error 属于操作错误类别。此类错误是由于外部环境(如套接字挂起或请求超时)而发生的。应用程序抛出错误,但稍后在执行期间处理。服务器响应错误 500 状态代码而不是通常的 200。发送响应后它继续工作。
第二个错误[nodemon] app crashed - waiting for file changes before starting... 属于程序员错误类别。当发生由程序员错误引起的未处理错误时,就会发生这种情况,从而使其成为错误。这可能是因为您的代码无法被 javascript 解析器解析,从而使其成为语法错误。在某些情况下,它也可能由于语义错误而发生,即。关于缺少模块或未定义变量的参考错误。
在出现此类错误后,服务器停止工作,并在检测到代码更改时由 nodemon 启动。
此类错误应不予处理,因为尝试处理它们可能会导致程序运行时出现不可预知的后果。
我向您推荐一篇关于 node.js 中的错误处理的精彩文章 https://www.joyent.com/developers/node/design/errors
【讨论】:
Uncaught ReferenceError。它发生在第三方库回调期间并导致应用程序崩溃。