【Java】try-catch文の基本を解説!例外・エラー処理をマスターしよう【サンプルあり】
  • facebookページ
  • twitterページ
  • 2019.09.23

    【Java】try-catch文の基本を解説!例外・エラー処理をマスターしよう【サンプルあり】

    try-catch文とは?

    try-catch文とは、Javaでtryとcatchという2つブロックを使用して記述された例外処理の文です。

    通常、実行される場合の処理をtryブロックに、例外発生時に実行される場合の処理をcatchブロックに分けて記述します。

    try-catch文の使い方・書き方

    例外処理に使うのは何となくわかりました。具体的な書き方も知りたいです。

    では、ここからはtry-catch文の具体的な使い方・書き方を見ていきましょう。

    まずは、基本的なtry-catch文の使い方・書き方をご紹介します。

    上記のサンプルコードは、sample.txtというファイルを読み込むためのプログラムです。

    tryブロックの中で、「sample.txtというファイルの読み込み」と、「読み込みが成功したことを示す文字列を表示」させます。

    catchブロックの中では、「sample.txtというファイルの読み込みができなかったことを示す文字列の表示」と、「Exceptionの例外をスロー」します。

    sample.txtファイルを読み込めなかった場合の実行結果は、以下のようになります。

    try-catch文で複数の例外をcatchする方法

    try-catch文で複数の例外処理を記述したいときは、catchブロックを複数個つくればOKです。

    以下のプログラムでは、2個のcatchブロックをつくっています。

    ファイルとクラスの例外を分けるために、「Exception」を「FileNotFoundException」と「ClassNotFoundException」に分割しました。

    Exception系のエラーについては、さまざまな種類があるので以下のサイトを参考にしてみるといいでしょう。

    https://docs.oracle.com/javame/config/cdc/ref-impl/cdc1.1.2/jsr218/ja/java/lang/class-use/Exception.html

    sample.txtファイルは読み込めたけど、クラスの読み込みができなかった場合の実行結果は、以下のようになります。

    try-catch文で必ず実行する処理は、finallyで対応する

    例外が発生してもしなくても、強制終了になるときでも、必ず実行しなければいけない処理を実行にするには、finallyブロックを使います。

    finallyブロックは、以下のようにcatchブロックの下に記述します。

    先ほどのファイルとクラスの読み込みプログラムに、finallyブロックを追加したプログラムが以下になります。

    上記のプログラムを実行した場合の実行結果は、以下のようになります。

    ポテパンダの一言メモ

    finally必ず使うべき状況

     

    • ファイル接続
    • データベース接続
    • ネットワーク接続

    などの後片付け処理は、必ずfinallyブロックに記述しましょう。

    try-catch文で例外を発生させる処理は、throwで対応する

    JVMに例外的状況を報告することを「例外を投げる」や「例外を送出する」といいます。

    例外を投げるためには、throwキーワードを使いましょう。

    ポテパンダの一言メモ

    JVMとは、正式名称「Java Virtual Machine」で、Javaのプログラムを動かすために必要なソフトウェアのことです。

    実際に、例外を投げるプログラムの例を見ていきましょう。

    ↓Main.java

    ↓Human.java

    HumanクラスのsetAge()メソッドでは、ageが負の値になるのを防ぐために、代入する前に引数の判定をします。

    引数が負の値だった場合は、IllegalArgumentExceptionインスタンスを投げ、例外的状況になったことをJVMに報告する、といった流れです。

    上記のプログラムを実行した場合の実行結果は、以下のようになります。

    try-catch文でオリジナルの例外クラスを定義する方法

    Javaでは、既存の例外クラスを継承して、オリジナルの例外クラスをつくることも可能です。

    ここでは、ひとつのオリジナルの例外処理をご紹介します。

    ↓Main.java

    ↓UnsupportedOriginalException.java

    UnsupportedOriginalExceptionの継承元になるクラスはExceptionになっています。

    上記のプログラムを実行した場合の実行結果は、以下のようになります。

    このようにさまざまな例外的状況を想定し、オリジナルの例外クラスとして作成できると、きめ細かいエラーの対処が可能になるでしょう。

    まとめ

    try-catch文の使い方・書き方についてご紹介しました。

    Javaではファイルの読み込む処理を実行する場合、例外処理の記述がないとコンパイルエラーになってしまいます。

    ぜひこの記事を参考に、例外処理の使い方をマスターしてください。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE

    ポテパンおすすめ案件