2

私は Node.js アプリケーションを作成していますが、そのコード ブロックの 1 つでさまざまな例外がスローされる可能性があります (私が呼び出すサード パーティ コードによって)。これらの例外に対応したいので、次のようにします。

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

基本的に、これは問題なく動作しますが、異なる例外をどのように区別すればよいですか?

残念ながら、それらはすべてErrorコンストラクターとして持っているため、これは実行可能な方法ではありません。私はmessageプロパティを使用するかもしれませんが、もちろんこれは最も良い方法ではありません (私は、メッセージが決して変更されないという事実に依存しているため、コンストラクターが変更されるよりも可能性が高いです)。

何か案は?

PS: 具体的には、tls.connect. SSL エラーであることを検出するにはどうすればよいですか?

4

2 に答える 2

2

JavaScript エラー オブジェクトにラップされたシステム レベルのエラーであるほとんどのエラーにはcodeプロパティがあり、errno比較することができます。このリストは、node.js ソース コードの uv.h で定義されています。それはおそらくあなたの 2 番目の選択肢です。

  1. 可能であれば instanceof
  2. codeまたerrno
  3. message

しかし、実際には、見なければならないことがありますmessage。javascript の動的で緩やかな型付けと、一般に node.js では例外が大きな役割を果たさないという事実を考えると、メッセージをチェックすることが最善の方法である場合があります。

于 2013-01-15T16:19:57.927 に答える
0

Node で try/catch 構造を使用することはお勧めしません。Node の非同期の性質が原因で機能するとは思わないためです (基本的な同期コードを使用している場合を除く)。

非同期関数/パッケージを利用していると仮定すると、おそらくコールバック関数でエラーステータスをチェックする運が良くなるでしょう。

于 2013-01-15T20:31:00.630 に答える