JavaScriptのtry/catchとは?エラー処理の基本と使い方を徹底解説

JavaScriptで開発を進めるうえで、エラー処理は避けて通れない重要な要素です。
特に、予期しないエラーが発生した場合でもアプリケーションを安全に動作させるためには、try/catchの理解が欠かせません。
この記事では、JavaScriptのtry/catchについて、基礎から実践まで体系的に解説します。
Contents
try/catchとは?
try/catchは、エラーが発生する可能性のある処理を安全に実行するための構文です。
通常、JavaScriptでエラーが発生すると、その時点で処理は停止します。しかし、try/catchを使うことで、エラー発生時の処理を自分で制御できます。
基本構文
try {
// エラーが発生する可能性のある処理
} catch (error) {
// エラー発生時の処理
}try/catchの基本的な使い方
まずは、最もシンプルな例から見ていきます。
try {
const result = notDefinedVariable + 1;
console.log(result);
} catch (error) {
console.log("エラーが発生しました");
}実行結果
エラーが発生しましたこのように、エラーが発生してもプログラムは停止せず、catchブロックが実行されます。
errorオブジェクトの活用
catchの引数には、エラー情報が格納されたオブジェクトが渡されます。
try {
JSON.parse("invalid json");
} catch (error) {
console.log(error.message);
}実行結果(例)
Unexpected token i in JSON at position 0主なプロパティ
message:エラー内容name:エラーの種類stack:エラーの発生箇所(デバッグ用)
finallyの使い方
finallyは、エラーの有無に関係なく必ず実行される処理です。
try {
console.log("処理開始");
} catch (error) {
console.log("エラー発生");
} finally {
console.log("後処理");
}実行結果
処理開始
後処理finallyは、以下のような場面で有効です。
- リソースの解放
- 後片付け処理
- ログ出力
throwで独自のエラーを発生させる
throwを使うことで、意図的にエラーを発生させることも可能です。
function checkAge(age) {
if (age < 18) {
throw new Error("18歳未満は利用できません");
}
return "利用可能です";
}
try {
console.log(checkAge(15));
} catch (error) {
console.log(error.message);
}実行結果
18歳未満は利用できませんtry/catchが必要な場面
try/catchは、すべての処理に使うものではありません。主に以下のケースで活用されます。
1. 外部データの処理
try {
const data = JSON.parse('{"name": "Taro"}');
console.log(data.name);
} catch (error) {
console.log("JSONの解析に失敗しました");
}2. ユーザー入力の検証
function parseNumber(value) {
const num = Number(value);
if (isNaN(num)) {
throw new Error("数値ではありません");
}
return num;
}
try {
console.log(parseNumber("abc"));
} catch (error) {
console.log(error.message);
}非同期処理とtry/catch(async/await)
try/catchは、async/awaitと組み合わせることで非同期処理のエラーも扱えます。
async function fetchData() {
try {
const response = await fetch("https://jsonplaceholder.typicode.com/posts/1");
const data = await response.json();
console.log(data);
} catch (error) {
console.log("通信エラーが発生しました");
}
}
fetchData();非同期処理の基礎については、
「JavaScriptの非同期処理とは?Promiseとasync/awaitの基礎」もあわせて確認しておくと理解が深まります。
try/catchの注意点
1. 同期処理のエラーのみ捕捉できる
通常のtry/catchは、同期的に発生するエラーのみを捕捉します。
try {
setTimeout(() => {
throw new Error("非同期エラー");
}, 1000);
} catch (error) {
console.log("捕まらない");
}この場合、エラーは捕捉されません。
2. 多用しすぎない
try/catchを多用すると、コードの可読性が下がります。
必要な箇所だけに限定して使用することが重要です。
try/catchと条件分岐の違い
エラー処理と条件分岐は役割が異なります。
- 条件分岐(if文):予測できる分岐
- try/catch:予測できないエラー
条件分岐については、
「JavaScriptの条件分岐(if文)とは?基本から解説」で詳しく解説しています。
まとめ
JavaScriptのtry/catchは、エラー処理を安全に行うための基本構文です。
ポイントを整理すると以下の通りです。
- エラー発生時の処理を制御できる
errorオブジェクトで詳細情報を取得可能finallyで必ず実行される処理を定義できるthrowで独自エラーを発生できる- 非同期処理では
async/awaitと組み合わせる
適切に使うことで、安定したアプリケーション開発につながります。

