如何检查JavaScript中的特定异常

How to check for a specific exception in JavaScript?

本文关键字:异常 JavaScript 何检查 检查      更新时间:2023-09-26

我正在编写一个Node.js应用程序,并且在其代码块之一中可能会抛出各种异常(由我调用的第三方代码)。现在我想对这些异常作出反应,因此我这样做:

try {
  // Call 3rd party code
} catch (e) {
  // Handle e
}

基本上,这工作得很好,但是…如何区分不同的例外?

不幸的是,它们都有Error作为构造函数,因此这不是可行的方法。我可能会使用message属性,但这当然不是最好的方式(因为我依赖于消息永远不会更改的事实,这比构造函数更改的可能性更大)。

任何想法?

PS:具体地说-我需要在尝试做tls.connect时对SSL错误作出反应。如何检测SSL错误?

大多数系统级错误包装成javascript错误对象将具有code属性和errno,您可以比较。该列表在node.js源代码的uv.h中定义。这可能是你的第二选择,首选项是

  1. instanceof where possible
  2. codeerrno
  3. message

但事实是,有时你只需要看看message。考虑到javascript的动态和松散类型,以及异常通常不会在node.js中扮演重要角色的事实,在某些情况下,检查消息是你能做的最好的事情。

我不建议在Node中使用try/catch结构,因为我认为由于Node的异步性质(除非您使用基本的同步代码),它不会工作。

假设您正在使用异步函数/包,您可能会更幸运地检查回调函数中的err状态。