プログラムを作成する際にエラーは避けられないものです。
しかしエラーが発生したときに適切に対処することで、ユーザーに悪影響を与えることなく、プログラムの安定性を保つことができます。
この記事ではJavaScriptにおけるエラーハンドリングの基本的な考え方と、その具体的な方法について解説します。
前回登場したエラーハンドリングについて、初心者でも理解しやすいようにサンプルコードを使いながら説明していきますので、安心して読み進めてください。
エラーハンドリングとは?
エラーハンドリングとはプログラムが実行中に発生するエラーを検知し、それに対して適切な処理を行うことを指します。
これによりエラーが発生してもプログラムがクラッシュすることなく、正常に動作を続けることが可能になります。
エラーの種類
- 文法エラー(Syntax Error)
コードの文法が間違っている場合に発生します。 - 実行時エラー(Runtime Error)
プログラムの実行中に発生するエラーです。 - 論理エラー(Logical Error)
プログラムは実行されますが、期待通りに動作しないエラーです。
try…catch構文
基本構文
JavaScriptでは、エラーハンドリングにtry…catch構文を使用します。
この構文を使うことで、エラーが発生した際にそのエラーをキャッチし、適切な処理を行うことができます。
try {
// エラーが発生する可能性のあるコード
} catch (error) {
// エラーが発生した場合の処理
}
finallyブロック
try…catch構文には、finallyブロックを追加することができます。
finallyブロックはエラーの有無にかかわらず、必ず実行されるコードを記述する場所です。
try {
console.log("プログラム起動");
// 数値を設定して割り算を行う
let warareruKazu = 10;
let waruKazu = 0;
let result = warareruKazu / waruKazu;
console.log("計算結果:", result);
} catch (error) {
// ゼロで割ろうとした場合のエラーメッセージを表示
console.error("エラー: ゼロで割ることはできません");
} finally {
// エラーがあってもなくても実行される部分
console.log("プログラム終了");
}
補足:finallyはオプションだね。
必要な時だけ記述しよう。
エラーハンドリングのベストプラクティス
エラーを適切にキャッチする
エラーハンドリングではすべてのエラーを適切にキャッチし、無視しないことが重要です。
エラーを無視すると、予期しない動作を引き起こす可能性があります。
エラーメッセージをわかりやすくする
エラーメッセージは開発者がエラーの原因を特定するための重要な手がかりです。
例えば以下のように、具体的でわかりやすいメッセージを提供するよう心がけましょう。
try {
const user = getUserById(1);
if (!user) {
throw new Error('ユーザーが見つかりませんでした。IDは1');
}
} catch (error) {
console.error(error.message);
}
予防的エラーハンドリング
予防的エラーハンドリングとは、エラーが発生する前にその可能性を排除する方法です。
例えば入力値の検証を行うことで、不要なエラーの発生を防ぐことができます。
function divide(a, b) {
if (b === 0) {
throw new Error('ゼロで割ることはできません。');
}
return a / b;
}
try {
const result = divide(10, 0);
console.log(result);
} catch (error) {
console.error('エラー:', error.message);
}
補足:ちょっと話が飛躍しますが、実務では開発(プログラミング)の前に上流の人(先輩とか)から詳細設計書を作成してもらいます。
詳細設計書を見ながら開発するわけですね。
ここでテスト仕様書も一緒にもらえるのであれば、テスト仕様書の内容を加味して開発すると手戻りが少なくできます。
逆に詳細設計書をもらった時点でテスト仕様書がない場合は、自分で開発より先に作ってしまうほうが手戻りが少なく、上流の人から「仕事ができる」と思ってもらえます。
ある程度経験を積んで、自分が詳細設計書を作成する立場になったときは、テスト仕様書も一緒に新人に渡せるようになりましょう。
まとめ
エラーハンドリングはJavaScriptに限らず、プログラミングにおいて非常に重要なスキルです。
エラーを適切に処理することで、アプリケーションの安定性を保ち、ユーザーに対してより良い体験を提供することができます。
今回紹介したtry…catch構文やベストプラクティスを参考に、エラーハンドリングを実装してみてください。
最初は難しく感じるかもしれませんが、慣れてくると自然に使いこなせるようになります。