JavaScriptのtry...catch...finally文の使い方を徹底解説
最新バージョンのJavaScriptには、例外処理(エラーハンドリング)の機能が標準で搭載されています。JavaScriptでは、try...catch...finally構文とthrow演算子を組み合わせることで、プログラムの実行中に発生した例外を適切に処理できます。
ただし、捕捉できるのはプログラマが意図的に投げた例外や実行時に発生するランタイムエラーであり、JavaScriptの構文エラー自体は捕捉できないという点に注意が必要です。
try...catch...finallyの基本構文
try...catch...finallyブロックの基本的な書き方は以下のとおりです。
try {
// 実行したいコード
}
catch ( e ) {
// 例外が発生した場合に実行されるコード
}
[ finally {
// 例外の発生有無にかかわらず必ず実行されるコード
}]
各ブロックの役割
- tryブロック:エラーが発生する可能性のあるコードを記述します。ここで例外が起きると、残りの処理を中断してcatchブロックへ移行します。
- catchブロック:tryブロック内で例外が発生したときにのみ実行されます。引数「e」には例外オブジェクトが渡され、エラーの詳細情報を取得できます。
- finallyブロック:省略可能です。例外が発生してもしなくても必ず実行されるため、後処理やリソースの解放などの処理に適しています。
サンプルコード
以下のコードを実行し、ボタンをクリックすると、JavaScriptにおけるtry...catch...finally文の動作を実際に確認できます。
<html>
<head>
<script>
function myFunc() {
var a = 100;
try {
alert("変数aの値は : " + a);
}
catch ( e ) {
alert("Error: " + e.description);
}
finally {
alert("Finallyブロックは必ず実行されます!");
}
}
</script>
</head>
<body>
<p>次のボタンをクリックして結果を確認してください:</p>
<form>
<input type="button" value="クリック" onclick="myFunc();" />
</form>
</body>
</html>
コードのポイント
この例では、変数「a」に100を代入し、tryブロック内でその値をアラート表示しています。tryブロック内ではエラーが発生しないため、catchブロックはスキップされます。しかし、finallyブロックの処理は例外の有無に関係なく必ず実行されるため、「Finallyブロックは必ず実行されます!」というメッセージが必ず表示されます。
補足として、古いInternet Explorerでは例外の説明文をe.descriptionで取得できましたが、モダンブラウザではe.messageを使用するのが一般的です。また、近年の開発ではalert()の代わりにconsole.log()を使ってデバッグ出力を行うことも多くなっています。
-
JavaScriptで「:(コロン)」と「=(イコール)」の使い分けを理解する方法
JavaScriptでは、コロン(:)はオブジェクトにプロパティを定義する際に使用し、イコール(=)は変数に値を代入する際に使用します。この2つの記号は似たような場面で目にしますが、役割がまったく異なるため、正しく使い分けることが重要です。コロン(:)を使う場面コロンは主にオブジェクトリテラル内でプロパティ名とその値を結びつけるときに使います。「プロパティ名: 値」という形式で記述し、オブジェクトの構造を定義できます。イコール(=)を使う場面イコールは代入演算子と呼ばれ、宣言した変数や既存の変数・プロパティに値を代入するときに使用します。右辺の値が左辺の変数に格納されます。サンプルコード以下の
-
C#でtry/catchブロックを使用するにはどうすればよいですか?
例外(Exception)とは、プログラムの実行中に発生した異常な状態を検出し、プログラムのある部分から別の部分へ制御を移すための仕組みです。C#の例外処理は、try、catch、finally、throw という4つのキーワードを基盤として構築されています。例外処理の4つのキーワードtry ― 例外が発生する可能性のあるコードブロックを示します。tryブロックの後には、1つ以上のcatchブロックが続きます。catch ― 例外を捕捉(キャッチ)するためのキーワードです。プログラム内で問題を処理したい箇所に例外ハンドラを配置し、発生した例外を受け取って適切に対処します。finally ― 例