【初心者向け】例外・例外処理とは?Javaでの書き方も紹介!

【初心者向け】例外・例外処理とは?Javaでの書き方も紹介!

プログラミングを始めたばかりの方にとって、「例外」という言葉は少し難しく感じるかもしれません。

しかし、例外はプログラムの動作を正しく理解し、扱うために欠かせない重要な概念です。
簡単に言えば、例外とは、プログラムが予期しない事態に直面したときに「おかしいよ!」と教えてくれるシステムのことです。

例外がどのように働き、どのように対処すればよいのか、プログラミングの世界における例外の役割を理解することで、より安心してコードを書けるようになるでしょう。

本解説記事は、無料プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ)の運営企業であるメディアファイブ株式会社(以下、メディアファイブ)に所属する現役エンジニア社員が、Javaにおいての例外処理の書き方を例に執筆いたしました

目次

    例外とは

    例外とは、プログラムの実行中に発生する異常な状況やエラーのことです。

    例外が発生すると、プログラムが中断され、正しく動作しなくなることがあります。

    例外とエラーの違い

    例外と混合しがちな用語として「エラー」があります。

    どちらもプログラムの実行中に発生する異常な状況を指します。

    広義では、例外はエラーに含まれますが、あえて区別する場合は以下のように表現されることが多いです。

    例外

    例外は、プログラムの実行中に発生する特定の条件や状況に対する反応のことを指します。

    例外の場合、適切に対処を行うとプログラムの流れを中断することなく処理できます。例として、ユーザの入力エラーやファイルが見つからないなどがあります。

    イメージとしては、プログラミング中に想定できる誤りのことです。

    エラー

    エラーは、プログラムの実行中に発生する問題のことを指し、プログラムの正常な動作を妨げます。主に、プログラムではどうにもできないメモリ不足などの問題をいいます。

    イメージとしては、プログラムを動かしてから気づく想定外の誤りです。

    例外の種類

    例外の種類は、大きく分けて「チェック例外」と「非チェック例外」の2つに分かれます

    それぞれの特徴は以下の通りです。今回は、Javaを例として解説します。

    チェック例外

    チェック例外はコンパイル時に例外が検出できるため、例外処理を必ず行う必要があります。

    コンパイルとは、プログラムを実行できる形に変換することです。

    java.lang.Exceptionに属する例外のことをいいます。

    java.lang.Exceptionはプログラム実行時に発生する可能性があり、例外処理が必ず必要になります。このクラスでは、ファイルが見つからない例外などを扱います。

    非チェック例外

    非チェック例外は例外処理が必要ではありませんが、プログラムの実行中に発生しないことが望ましいです。

    java.lang.Error、java.lang.RuntimeExceptionに属する例外のことをいいます。

    java.lang.Errorは、システムが原因で発生するエラーをまとめたクラスであり、メモリ不足やハードウェアの故障などを扱います。

    java.lang.RuntimeExceptionは、通常のプログラムの実行時には発生しないことが望ましい例外を扱うクラスです。例として「nullが受け渡されて処理が止まった」「配列のサイズ外のインデックスにアクセスしようとしている」などの例外があります。

    Could not retrieve HTML for embedding from https://tech-dream.school/archives/category/study/programming/lang/3692

    例外処理とは

    例外処理とは、プログラム内に前もって「この例外が発生したら、この処理を行ってください」という指示を書くことを指します。

    例外処理の必要性

    例外処理を記述することには、以下の利点があります。

    プログラムの安定性

    予期しないエラーが発生した際にプログラムが動作しなくなるのを防ぎ、安定してプログラムを利用できます。

    例外の管理

    例外が発生した際、その発生場所や原因を明確にし、必要に応じて適切な処理を行うことが可能になります。これにより、問題の早期発見と修正ができるようになります。

    例外処理の構文

    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種類があります。
    • 例外処理とは、例外が発生した際の処理を、前もってプログラム内に書くことを指す。

    プログラムを作成する際、予期しない例外が発生することは避けられません。

    例外処理を適切に実装することで、より堅牢なプログラムを作れるようにしましょう!

    まずは選考会へ!

    「プログラマーになって一緒に働きませんか?」
    テックドリームの選考会は、選考だけでなく「相互理解」の場。不安なことも直接ご相談いただけます。


    電話でのご予約

    Webかんたん予約ができない場合や、ご質問がございましたら、
    お気軽にお電話ください。

    0120-262-242
    9:00~18:00(土日祝を除く)

     

    >テクド・リム

    テクド・リム


    「テックドリーム」の公式キャラクター。
    プログラマーだった父の影響を受けて、
    夢に向かって日々勉強に励むプログラマーのタマゴ。
    夢は「世界を変える、すごいプログラマーになること!」

    CTR IMG