はじめに
JavaScriptには、コードの実行中に発生する可能性のあるエラーをキャッチして適切に処理するためのtry...catch構文があります。この構文を使用することで、エラーが発生してもプログラムがクラッシュせずに処理を続行できます。
基本的な構文
try {
// エラーが発生する可能性のあるコード
} catch (error) {
// エラーが発生した場合に実行されるコード
} finally {
// (オプション)エラーの有無にかかわらず常に実行されるコード
}
- tryブロック:エラーが発生する可能性のあるコードを記述します。
- catchブロック:tryブロック内でエラーが発生した場合に実行されるコードを記述します。発生したエラーを引数として受け取ります。
- finallyブロック(オプション):エラーの有無にかかわらず常に実行されるコードを記述します。
基本的な使用例
try {
let result = someFunction(); // ここでエラーが発生するかもしれない
console.log(result);
} catch (error) {
console.error("An error occurred:", error.message); // エラーが発生した場合に実行される
} finally {
console.log("This will always run regardless of an error."); // 常に実行される
}
try ブロック
tryブロック内には、エラーが発生する可能性のあるコードを記述します。例えば、外部APIの呼び出しやファイルの読み込みなど、エラーが発生するリスクがある処理をここに記述します。
catch ブロック
tryブロック内でエラーが発生した場合、このブロックが実行されます。catchブロックの引数として渡されるerrorオブジェクトは、発生したエラーの情報を含んでいます。一般的に、error.messageプロパティを使用してエラーメッセージを取得します。
finally ブロック(オプション)
finallyブロックは、エラーの有無にかかわらず常に実行されます。リソースのクリーンアップなど、必ず実行したい処理がある場合に使用されます。
ネストされた try...catch
try...catchブロックはネストして使用することもできます。これは、異なるレベルでのエラー処理が必要な場合に便利です。
try {
try {
// ここでエラーが発生する可能性がある
someFunction();
} catch (innerError) {
console.error("Inner error:", innerError.message);
}
// ここで別のエラーが発生するかもしれない
anotherFunction();
} catch (outerError) {
console.error("Outer error:", outerError.message);
}
まとめ
- try...catchは、コードのエラー処理を行うための強力なツール
- tryブロック内にエラーが発生する可能性のあるコードを配置し、catchブロックでエラーを処理
- finallyブロックを使用して、エラーの有無にかかわらず常に実行される処理を記述できる
- ネストされたtry...catchブロックを使用して、異なるレベルでのエラー処理を行うことができる