Java
PR

Javaの例外処理throwsの使い方は?throwとの違いもわかりやすく解説

Javaの例外処理throwsの使い方
shin-memo
記事内に商品プロモーションを含む場合があります

Javaを勉強しているのだけど、例外処理のthrowsがよくわからないなぁ。throwとどう違うの?使い方をわかりやすく教えて欲しい。

こんな疑問にお答えします。

運営者:シン
運営者:シン
Profile
フリーランスエンジニア|大阪在住|30歳【保有資格】Java Gold・ITパスポート・SEO検定全級・全日本SEO協会認定SEOスペシャリスト【経歴】配送業▶︎販売員▶︎プログラミングスクールTECH CAMP受講▶︎プログラマー▶︎独立【発信内容】プログラミング・エンジニア転職・フリーランス
プロフィールを読む

この記事で解説する「Javaのthrowsの使い方」をお読みいただくことで、throwsについての理解が深まりますよ。

シン
シン

僕は現役のフリーランスエンジニアです。Javaを使った開発をしており、Javaの資格も保有しています。それらの知見を元に、丁寧に解説していきますね!

Javaエンジニアとしてスキルアップするためにも、ぜひ最後まで読んでみてください。

Javaの例外処理throwsとは

基本的な「Javaのthrowsとは何か?」から「throwsとthrowの違い」についてもみていきましょう。

  1. throwsとは
  2. throws 必要性とは
  3. throwsとthrowsの違い

throwsとは

Javaのthrowsとは、メソッド内で例外が発生した時に、呼び出し元に例外処理を投げられる方法です。「throw」は「投げる」という意味でもあるので、「例外処理を投げる時に使うものなんだな」と覚えると良いでしょう。

throwsの基本的な書き方は、以下の通り。

アクセス修飾子 戻り値 メソッド名() throws 例外 {}
public void sampleA() throws FileNotFoundException {}

throwsの必要性とは

throwsは、例外処理を別のメソッドで行いたい場合や、複数の例外処理を1つのメソッドでまとめて行いたい場合に使えます。一般的に例外処理は「throw」を書いてtry-catch文で処理を行えます。

しかし、メソッドが複数ある場合、例外処理をしたいとなると各メソッドでthrowを書かなければなりません。そこでthrowsを使えば、例外処理をまとめて行うことができるので、コードの可読性が上がります。

戻り値 メソッド名() throws 例外, 例外{}

throwsは実際の現場ではあまり使われることはありませんが、いざという時のために覚えておいて損はないでしょう。詳しい使い方などは後ほど解説していきます。

throwsとthrowsの違い

Javaの例外処理には、throwsの他にthrowがあります。throwsとthrowは似ていますが、処理内容が違います。以下は2つの違いです。

  • throwsは、例外処理を受け取るメソッド側で処理ができる。メソッドのシグニチャの右側に「throws 例外」を記述する。複数の例外をまとめて書くことができる。
  • throwは、プログラマーが意図的に例外を発生させる。throw new 例外();を記述する。

Javaのthrowsとthrowの使い方をわかりやすく解説

throwsとthrowは書き方が異なります。2つの使い方をみてみましょう。

  1. throwsの使い方・書き方
  2. throwの使い方・書き方

throwsの使い方・書き方

throwsは定義したメソッド内で例外が発生した場合、別のメソッドでその例外処理を受け取り、処理を行えます。たとえば、以下は「throws」のサンプルコードです。

import java.io.FileNotFoundException;
import java.io.FileReader;

public class Sample {
    public void sampleA() throws FileNotFoundException {
      FileReader file = new FileReader("sample.txt");
      System.out.println("sample.txtの読み込みに成功しました");
    }

    public void sampleB() {
      try {
        sampleA();
      } catch(FileNotFoundException e) {
        System.out.println("sample.txtが存在しませんでした");
      }
    }
}

上記はsampleAメソッドの右側に「throws FileNotFoundException」を記述しています。このメソッド内で例外が発生した場合、sampleBメソッドのtry-catchでキャッチされます。

もしファイルが存在すれば読み込みに成功し、存在しなければcatchされて「sample.txtが存在しませんでした」と表示されます。

throwsは、定義したメソッド自身ではなく、別のメソッドで例外処理を実施したい場合にも使えます。

throwの使い方・書き方

throwはプログラマが意図的に例外を発生させられます。ある条件と一致する場合に例外を発生させ、エラーメッセージを表示できます。たとえば、以下は年齢の数値を受け取るメソッドです。

public void sampleC(int age) {
    if(age < 0) {
      throw new IllegalArgumentException(“引数の値が不正です”);
    }
 }

上記は年齢の値が0より小さかった場合、「IllegalArgumentException」の例外を投げる処理をしています。まず、年齢が0より小さくなることはないので、例外を発生させるようにしています。throwは例外を発生させたい任意の箇所に記述することで、例外処理を実施できます。

Javaのthrowsの複数の書き方

throwsは複数の例外処理を記述できます。書き方は以下の通り。

public static void readFile(String path) throws FileNotFoundException,NullPointerException {
      FileReader file = new FileReader(“”c:\\test\\sample.txt””);
 }

throwsの後にカンマ「,」で区切って2つの例外を記述することで、複数の例外処理に対応できます。上記の場合ですと、もしファイルが存在しなかった場合は「FileNotFoundException」が発動し、ファイルがnullだったら「NullPointerException」が発生します。

Javaのthrowsとthrowの使い方:まとめ

Javaの例外処理throwsとthrowの違いや使い方について解説しました。

throwsは例外処理を呼び出し元のメソッドで行いたい場合、また、複数の例外処理をまとめて行いたい場合に有効です。throwは、プログラマが意図的に例外を発生させ、エラーメッセージを返したい場合に使えます。例外処理は実務でもよく目にする機会があると思いますので、ぜひ覚えてみてください。

以下ではJavaエンジニアになるための学習ロードマップを解説していますので、Javaエンジニアを目指している方は読んでみてください!

あわせて読みたい
Javaエンジニアの学習ロードマップ!実践で使える技術を厳選【2023年版】
Javaエンジニアの学習ロードマップ!実践で使える技術を厳選【2023年版】
運営者情報
運営者:シン
運営者:シン
フリーランスエンジニア|大阪在住|30歳【保有資格】Java Gold・ITパスポート・SEO検定全級・全日本SEO協会認定SEOスペシャリスト【経歴】配送業▶︎販売員▶︎プログラミングスクールTECH CAMP受講▶︎プログラマー▶︎独立【発信内容】プログラミング・エンジニア転職・フリーランス
記事URLをコピーしました