エクセプション(exception)は、ITの世界でよく使われる「例外」を指す用語です。主にプログラムの実行中に発生する「予測されるエラーや異常」に対処するための仕組みとして使われます。
この記事では『エクセプション(exception)』について、以下の内容を分かりやすく説明するように心掛けています。ご参考になれば幸いです。
- エクセプションとは
- 「エクセプション」と「エラー」の違い
- エクセプションの具体例
エクセプションとは
エクセプションとは、簡単に言うと「予定していた動作とは異なるが、あらかじめ予測されていた問題が発生した状態」を指します。プログラムは通常、正常に動作することを期待して実行されますが、実行中に「予測された異常事態」が発生することがあります。この異常事態に対処するための特別な処理がエクセプション処理です。
例えば、「ファイルが見つからない」「ネットワークエラー」、または「ユーザーの無効な入力」といった事象は、事前に予測できるため、そのような問題に対処する仕組みをあらかじめ準備しておくことが重要です。これが、エクセプション処理の基本的な考え方です。プログラムが異常事態に直面しても、エクセプション処理を使うことで柔軟に対応できるのです。
エクセプション処理は、日常生活で「予測していたトラブルが起きたが、すでに対策を考えていたため問題ない」という状態に似ています。
「エクセプション」と「エラー」の違い
エクセプションとエラーは似ていますが、実は異なります。
エラーは、プログラムが正常に動作できない「想定外の異常事態」を指します。例えば、メモリ不足やシステムクラッシュといった問題がエラーの典型です。
一方、エクセプションは「想定内の異常事態」であり、事前に予測されていて対処方法が用意されています。例えば、ユーザーの入力ミスやサーバーからデータが取得できないといった問題が発生しても、エクセプションを使えばプログラムはクラッシュせず、適切な対応を取ることができます。
エクセプションの具体例
具体的なエクセプションの例として、JavaScriptのサンプルコードを用いて説明します。
例えば、ブラウザでリソースを取得(fetch)しようとした際に、サーバーがダウンしていてリソースが取得できないことがあります。このような状況は、あらかじめ予測できるため、適切なエクセプション処理を用意しておきます。
try {
const response = await fetch('https://example.com/data');
if (!response.ok) {
throw new Error('リソースが取得できませんでした');
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error('エラーが発生しました: ', error.message);
} finally {
console.log('リクエスト処理が完了しました');
}
この例では、リソースの取得が失敗した場合、throw
でエクセプションを発生させ、catch
でそのエクセプションを処理しています。さらに、finally
ブロックでリクエスト処理が完了したことをログに記録しています。このように、予測されたエラーに対応することで、プログラムの安定性を保つことができ、クラッシュを防ぐことができます。
次の例では、ユーザーからの入力を数値に変換しようとした際、変換できない場合にエラーを処理します。
function convertToNumber(input) {
try {
const number = parseInt(input);
if (isNaN(number)) {
throw new Error('数値に変換できません');
}
console.log('変換された数値: ', number);
} catch (error) {
console.error('エラー: ', error.message);
} finally {
console.log('処理が終了しました');
}
}
convertToNumber('abc'); // エラー: 数値に変換できません
この例では、入力を数値に変換できない場合にエラーメッセージを表示し、finally
ブロックで処理が終了したことをログに記録しています。このようにエクセプションを使うことで、プログラムは止まらず、適切な対応を行うことができます。
本記事のまとめ
この記事では『エクセプション(exception)』について、以下の内容を説明しました。
- エクセプションとは
- 「エクセプション」と「エラー」の違い
- エクセプションの具体例
お読み頂きありがとうございました。