2011-07-01 11 views
1

私はJavascriptを使用して送信し、エラーにしたいときに私が行いますJavascriptを使用して正しくエラーを処理するには?

throw new Error()

それは動作しますが、私は数例渡す場合:

throw new Error(500)

を結果は次のとおりです。

Error: 500

ここで、 'Error:'は文字列です。

私はこのエラーを処理する関数を持っていますが、この関数はエラーのコードを知っていなければなりません。私は文字列を解析する必要がありますか? :-(

+0

あなたの質問は一般的にJavascript、具体的にはnode.jsでtherサーバー上で実行されているjavascriptを参照していますか?特にnode.jsについては、私は以下のRaynosの答えを理解しています。さもなければ、try/catchブロックで伝票を作ることがなぜサーバーをシャットダウンするのか分かりません。クライアント側の1つは、エラーを投げ、try/catchブロックに必要不可欠なものをキャッチしています。 – DavidHyogo

答えて

0

は、いくつかの正規表現を使用して番号を抽出します。ありがとう、そしてそれはあなたではなく、分析すべきか何それは(Error.prototype.toStringある)コンソールに出力します。あなたはそのようにエラーをスローした場合

+0

@ライトはい、でもエレガントだとは思いません....別の方法がありますか? – dail

+0

上記の私の答えをご覧ください。これは、数字を直接渡してキャッチブロック内の数字としてスローしてキャッチすることができることを示しています – DavidHyogo

1

Errorインスタンスがmessage性質を持っている?私はあなたが言っているものを手に入れる場合は

1

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Errorを参照 - エラーメッセージは常に文字列です。数値を渡しても暗黙的に文字列に変換されます。

Error: 500は、Errorオブジェクトのデフォルトの文字列表現です。このオブジェクトを文字列に変換するか、error.toString()を直接呼び出すと得られます。エラーメッセージに興味がある場合は、メッセージに直接アクセスする必要があります。parseInt(error.message, 10)が必要です。

1

スローエラーを起こさないように強くお勧めします。キャッチしようとすると高価ですし、1つはあなたのサーバーがシャットダウンを意味します。

私はあなたがイベントのアプローチを使用することをお勧めします、あなたのコードの大部分はイベント・イミターを含みます。

あなただけthis.emit("error", new Error(500))

0

を行うことができますこの方法は、あなたが実際にErrorオブジェクトを使用する必要はありません。 throwと書くだけで、キャッチブロックでキャッチしたいものがあればそれを使うことができます。 この小さなコードスニペットは、アラートボックスに500を表示します。

function throwError(msg){ 
    throw msg; 
} 
try{ 
    throwError(500); 
}catch(e){ 
    alert(e); 
} 

あなたはtypeofeをテストする場合、それは数を返します。

関連する問題