例外処理には JavaScript で try...catch を使用できます。例:
try { foo.bar( );} catch (e) {alert(e.name ": " e.message);}
現在、発生する可能性のあるシステム例外は主に次の 6 種類です。
EvalError: eval() のコードの実行中にエラーが発生したときに発生します
RangeError: 数値変数またはパラメータが有効な範囲外にあるときに発生します
ReferenceError: 無効な参照の参照を解除するときに発生します
SyntaxError : eval() でのコードの解析中に構文エラーが発生した場合に発生します
TypeError: 変数またはパラメーターが有効な型ではない場合に発生します
URIError: encodeURI() または decodeURI() に無効なパラメーターが渡された場合に発生します
上記 6 つの例外オブジェクトはすべて、Error オブジェクトから継承します。これらはすべて、次の 2 つの構築メソッドをサポートしています:
new Error();new Error("Exception information");
手動で例外をスローする方法は次のとおりです:
try { throw new Error("Whoops!");} catch (e) {alert (e.name ": " e.message);}
例外メッセージのタイプを判断したい場合は、catch で行うことができます:
try { foo.bar();} catch (e) { if (einstanceofEvalError){alert(e.name":"e.message)} elseif(einstanceofRangeError){alert(e.name":"e.message); //etc }
エラーには次の主なプロパティがあります:
description: エラーの説明 (IE でのみ使用可能)。
fileName: エラー ファイル名 (Mozilla でのみ使用可能)。エラー行番号 (Mozilla でのみ使用可能)。
message: エラー メッセージ (IE での説明と同じ)。
number: エラー コード (IE でのみ使用可能)。 : Java のスタック トレースのようなエラー スタック情報 (Mozilla でのみ利用可能)
エラー メッセージをよりよく理解するために、キャッチ部分を次の形式に変更できます:
コードをコピー
コードは次のとおりです: try { foo.bar();} catch (e) { if (browserType) != BROWSER_IE) {
alert("name: " e.name "message: " e.message "lineNumber: " e.lineNumber "fileName: " e.fileName "stack: " e.stack); } else {
alert("name: " e.name " errorNumber: " (e.number & 0xFFFF ) "message: " e.message");
} }
JavaScript の throw コマンドは実際には任意のオブジェクトをスローでき、このオブジェクトは catch で受け取られます。例:
コードをコピー
コードは次のとおりです: try { throw new Date( ); // 現在の時刻オブジェクトをスローします} catch (e) {alert(e.toLocaleString()) // 現在の時刻を表示するためにローカル形式を使用します}