try-catch-finally文は、例外処理(エラー処理)と最終処理を指定する制御構文。
最終処理は、例外が発生したかどうかに限らず、実行する。
構文
無条件例外処理と最終処理
try {
// 例外を発生させる可能性がある処理文
} catch( e ) {
// 無条件例外処理
} finally {
// 最終処理
}
// 例外を発生させる可能性がある処理文
} catch( e ) {
// 無条件例外処理
} finally {
// 最終処理
}
※ 2013/02/04現在、Firefox、IE9、Chromeで動作確認。
条件付き例外処理と最終処理
try {
// 例外を発生させる可能性がある処理文
} catch( e if 条件式 ) {
// 条件付き例外処理
} finally {
// 最終処理
}
// 例外を発生させる可能性がある処理文
} catch( e if 条件式 ) {
// 条件付き例外処理
} finally {
// 最終処理
}
※ 2013/02/04現在、Firefoxでのみ動作を確認。
複数の例外処理と最終処理
try {
// 例外を発生させる可能性がある処理文
} catch( e if 条件式1 ) {
// 条件付き例外処理1
} catch( e if 条件式2 ) {
// 条件付き例外処理2
} catch( e ) {
// 無条件例外処理
} finally {
// 最終処理
}
// 例外を発生させる可能性がある処理文
} catch( e if 条件式1 ) {
// 条件付き例外処理1
} catch( e if 条件式2 ) {
// 条件付き例外処理2
} catch( e ) {
// 無条件例外処理
} finally {
// 最終処理
}
※ 2013/02/04現在、Firefoxでのみ動作を確認。
サンプル
無条件例外処理と最終処理
<script type="text/javascript">
try {
throw "例外サンプル1"; // 例外を生成
} catch( e ) { // 無条件例外処理
document.write ( "例外: " + e + "<br />" );
} finally { // 最終処理
document.write ( "最終処理<br />" );
}
</script>
try {
throw "例外サンプル1"; // 例外を生成
} catch( e ) { // 無条件例外処理
document.write ( "例外: " + e + "<br />" );
} finally { // 最終処理
document.write ( "最終処理<br />" );
}
</script>
↓↓↓出力結果↓↓↓
※ 2013/02/04現在、Firefox、IE9、Chromeで動作確認。
条件付き例外処理と最終処理
<script type="text/javascript">
try {
throw "例外サンプル1"; // 例外を生成
} catch( e if e == "例外サンプル1" ) { // 条件付き例外処理
document.write ( "例外: " + e + "<br />" );
} finally { // 最終処理
document.write ( "最終処理<br />" );
}
</script>
try {
throw "例外サンプル1"; // 例外を生成
} catch( e if e == "例外サンプル1" ) { // 条件付き例外処理
document.write ( "例外: " + e + "<br />" );
} finally { // 最終処理
document.write ( "最終処理<br />" );
}
</script>
↓↓↓出力結果↓↓↓
※ 2013/02/04現在、Firefoxでのみ動作を確認。
複数の例外処理と最終処理
<script type="text/javascript">
try {
throw "例外サンプル2"; // 例外を生成
} catch( e if e == "例外サンプル1" ) { // 条件付き例外処理
document.write ( "例外: " + e + "<br />" );
} catch( e if e == "例外サンプル2" ) { // 条件付き例外処理
document.write ( "例外: " + e + "<br />" );
} catch( e ) { // 無条件例外処理
document.write ( "例外: " + e + "<br />" );
} finally { // 最終処理
document.write ( "最終処理<br />" );
}
</script>
try {
throw "例外サンプル2"; // 例外を生成
} catch( e if e == "例外サンプル1" ) { // 条件付き例外処理
document.write ( "例外: " + e + "<br />" );
} catch( e if e == "例外サンプル2" ) { // 条件付き例外処理
document.write ( "例外: " + e + "<br />" );
} catch( e ) { // 無条件例外処理
document.write ( "例外: " + e + "<br />" );
} finally { // 最終処理
document.write ( "最終処理<br />" );
}
</script>
↓↓↓出力結果↓↓↓
※ 2013/02/04現在、Firefoxでのみ動作を確認。