無料プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ)の運営企業であるメディアファイブ株式会社に所属する現役エンジニア社員が、「例外」とは何か、Javaにおいての例外処理の書き方などを未経験の方にも分かりやすくご紹介いたします!
例外とは
例外とは、プログラムの実行中に発生する異常な状況やエラーのことです。
例外が発生すると、プログラムが中断され、正しく動作しなくなることがあります。
例外とエラーの違い
例外と混合しがちな用語として「エラー」があります。
どちらもプログラムの実行中に発生する異常な状況を指します。
広義では、例外はエラーに含まれますが、あえて区別する場合は以下のように表現されることが多いです。
例外
例外は、プログラムの実行中に発生する特定の条件や状況に対する反応のことを指します。
例外の場合、適切に対処を行うとプログラムの流れを中断することなく処理できます。例として、ユーザの入力エラーやファイルが見つからないなどがあります。
イメージとしては、プログラミング中に想定できる誤りのことです。
エラー
エラーは、プログラムの実行中に発生する問題のことを指し、プログラムの正常な動作を妨げます。主に、プログラムではどうにもできないメモリ不足などの問題をいいます。
イメージとしては、プログラムを動かしてから気づく想定外の誤りです。
例外の種類
例外の種類は、大きく分けて「チェック例外」と「非チェック例外」の2つに分かれます。
それぞれの特徴は以下の通りです。今回は、Javaを例として解説します。
チェック例外
チェック例外はコンパイル時に例外が検出できるため、例外処理を必ず行う必要があります。
コンパイルとは、プログラムを実行できる形に変換することです。
java.lang.Exceptionに属する例外のことをいいます。
java.lang.Exceptionはプログラム実行時に発生する可能性があり、例外処理が必ず必要になります。このクラスでは、ファイルが見つからない例外などを扱います。
非チェック例外
非チェック例外は例外処理が必要ではありませんが、プログラムの実行中に発生しないことが望ましいです。
java.lang.Error、java.lang.RuntimeExceptionに属する例外のことをいいます。
java.lang.Errorは、システムが原因で発生するエラーをまとめたクラスであり、メモリ不足やハードウェアの故障などを扱います。
java.lang.RuntimeExceptionは、通常のプログラムの実行時には発生しないことが望ましい例外を扱うクラスです。例として「nullが受け渡されて処理が止まった」「配列のサイズ外のインデックスにアクセスしようとしている」などの例外があります。
例外処理とは
例外処理とは、プログラム内に前もって「この例外が発生したら、この処理を行ってください」という指示を書くことを指します。
例外処理の必要性
例外処理を記述することには、以下の利点があります。
プログラムの安定性
予期しないエラーが発生した際にプログラムが動作しなくなるのを防ぎ、安定してプログラムを利用できます。
例外の管理
例外が発生した際、その発生場所や原因を明確にし、必要に応じて適切な処理を行うことが可能になります。これにより、問題の早期発見と修正ができるようになります。
例外処理の構文
Javaでの例外処理の書き方に関して解説いたします。
try~catch文
例外処理の基本的な書き方は、以下の2点です。
- 通常の処理をtryブロックに書く
- tryブロック内で例外が発生した際の処理をcatchブロックに書く
try {
// 処理
} catch (例外の型 例外名) {
// 例外が発生した際の処理
}
finally
処理の正常終了・例外発生に関わらず、実行したい処理があれば、finallyブロック内に記述します。finallyブロックはcatchブロックの後に書きます。
try {
// 処理
} catch (例外の型 例外名) {
// 例外が発生した際の処理
} finally {
// 正常終了・例外発生に関わらず、実行したい処理
}
ソースコード実例
public class Sample {
public static void main (String[] args) {
int num1 = 10;
int num2 = 0;
int result;
try {
result = num1 / num2; // ここで例外発生
System.out.println("結果: " + result);
} catch (ArithmeticException e) {
System.out.println("エラー: ゼロで割ることはできません");
} finally {
System.out.println("このブロックは常に実行されます");
}
}
}
ArithmeticExceptionとは算術演算の際に発生する可能性のある一般的な例外です。
0による除算、または整数型が許容する範囲を超える(オーバーフロー)場合に発生します。
実行結果
エラー: ゼロで割ることはできません
このブロックは常に実行されます
例外のまとめ
今回は、例外について解説してきました。
- 例外とは、プログラムの実行中に発生する異常な状況やエラーのことを指す。
- 例外には、例外処理が必須のチェック例外と例外処理が必要ない非チェック例外の2種類があります。
- 例外処理とは、例外が発生した際の処理を、前もってプログラム内に書くことを指す。
プログラムを作成する際、予期しない例外が発生することは避けられません。
例外処理を適切に実装することで、より堅牢なプログラムを作れるようにしましょう!
当校テクドリは無料プログラミングスクールです。現役エンジニアの講師が学習をしっかりサポートします!
6ヶ月以上の学習期間が設けられているため、プログラミング未経験者でも安心して学べます。
卒業後は、運営企業のメディアファイブへ正社員のITエンジニアとして採用されるため、就職、転職活動は不要です。
ご興味がある方は、ぜひ下記リンクから無料体験セミナーにお申し込みください!