如何在JavaScript中检查特定的exception?

我正在编写一个Node.js应用程序,并且在其代码块之内可能会引发各种exception(通过我称之为第三方代码)。 现在我想对这些例外做出反应,因此我这样做:

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

基本上,这工作正常,但…我如何区别不同的例外?

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

有任何想法吗?

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

大多数包含在javascript错误对象中的系统级错误的错误都会有一个code属性,您可以比较一下errno 。 该列表在uv.h中的node.js源代码中定义。 这可能是你的第二select,首选

  1. 如果可能的话
  2. codeerrno
  3. message

但事实是,有时你只需要看message 。 鉴于javascript的dynamic和松散的input,以及一般的exception在node.js中不起重要作用的事实,将会有检查邮件是最好的你可以做的事情。

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

假设你正在使用asynchronous函数/包,你可能会有更多的运气检查callback函数中的错误状态。