如何检查JavaScript中的特定异常?

时间:2013-01-15 16:12:44

标签: javascript node.js exception exception-handling error-handling

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

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

基本上,这种方法很好,但是...我如何区别不同的异常?

他们都不幸地以Error作为构造函数,因此这不可行。我可以使用message属性,但当然这不是最好的方式(因为我依赖于消息永远不会改变的事实,这是 - 恕我直言 - 比构造函数更改的可能性更大)。 / p>

有什么想法吗?

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

2 个答案:

答案 0 :(得分:2)

包含在javascript错误对象中的系统级错误的大多数错误都将具有code属性,您可以与errno进行比较。该列表定义为in uv.h in the node.js source code。这可能是你的第二选择,优先选择

  1. instanceof尽可能
  2. codeerrno
  3. message
  4. 但事实上有时你只需要看message。鉴于javascript的动态和松散类型以及一般异常在node.js中不起作用的事实,有时会检查消息是你能做的最好的事情。

答案 1 :(得分:0)

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

假设您正在使用异步函数/包,那么在回调函数中检查错误状态可能会更加幸运。