gorogoronyan FC2

JavaScript: エラー処理 try, catch, finally

概略

エラーを考慮していない単純なプログラムでは TypeError などのエラーが発生すると後の処理は行われず、 プログラムはそのまま終了してしまいます。

アプリケーションプログラムではエラーが発生した場合でも終了させず、 処理を継続したい場合があります。 このようなときに try, catch, finally を使います。

主な用途は

try, catch, finally の構文

try {
	// 本体の処理
}
catch(e){
	// try {} の中でエラーが発生すると catch(){} 内の処理に移ります。
	// 引数 e は Error のオブジェクトです。
}
finally {
	// try や catch の処理の後に行われる処理。
	// 本体の処理が正常に終了した場合でもエラーが発生した場合でも
	// 必ず finally {} の中の処理が行われます。
}

finally の処理

finaly {} の処理はエラーの有無に関係なく必ず実行されます。 try {} 内や catch {} 内に return がある場合でも 実行されます。 ストリームのクローズ、リソースの解放、通信の終了など エラーの有無に関係なく必要な後始末処理は finally に書きます。

エラーの詳細情報: Error.stack

エラーが発生した場所などの詳細情報は Error.stack で見ることができます。

サンプル

エラーを発生させる: throw Error

プログラムで自発的にエラーを発生させる (エラーを投げる、 スローすると言います) 場合に使用します。

// 例: 値をチェックする処理。
// value が数値でない場合は Error を投げる
	if (typeof(value) != "number"){
		throw new Error(`set myProperty:${value}`);
	}

関連

inserted by FC2 system