Blacky Blog

外資系IT企業でエンジニアをしています。 ここでは自分が読んだ本、勉強していることなど None Tech の情報を発信しています。

プログラミング

[初心者向け] Java 独学: 5. コンパイルとデバッグ: 例外処理: その 2

投稿日:6月 10, 2019 更新日:

みなさん、こんにちは。

このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイトや本を読んで学んだだけの方でも、挫折せず、自分で手を動かせるような構成にしていますのでおすすめの方法です。

フリューゲル

[初心者向け] Java 独学: 5. コンパイルとデバッグ: 例外処理: その 2

よくプログラムが “落ちる” という言葉を聞いたことないでしょうか。動作していたら突然画面が消える奴です。あれってすごく不安になりますよね。入力していたデータはどうなったの?、なんか間違った操作しちゃったかな、なんか使うの不安だなー。こんな印象を持ちますよね。

例外処理をしっかりしたプログラムはエラーが発生しても利用者に適切な情報を伝え、不安を与えないようにすることができます。

例外とは?

そもそも例外ってなんでしょうか。文字通りで想定外のエラーというイメージでしょうか。動かしながら見ていきましょう。

import java.util.Scanner;

/// Lesson5. Debug
/// this is sample.
public class Lesson5_Debug
{
    public static void main(String[] arg)
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Please enter number.");
        String in = sc.nextLine();
        sc.close();
        int enternumber = Integer.parseInt(in);
        System.out.println("10 / number = "+Integer.toString(10/enternumber));
        return;
    }
}

上記は、入力された数字で 10 を割り算するというものです。

“test” という文字列を入力してみましょう。

するとエラーが発生しました。

java.lang.NumberFormatException というのがまさに Exception (例外) です。英語を読めば大体わかります。数字の形式に関する例外のような感じです。

さて、想像しましょう。なんかインターネットで買い物していていきなりこのエラーがでてきたらいどう思います?そもそも何が起きたかわからないでしょね。エラーが起きたことすらわからない人が多いと思います。

では全く同じ操作で以下のエラーだったらどうでしょうか。

正しい数字で入力していねと シンプルなエラーです。これだったら、利用者はエラーの原因と何をすればいいかわかりますよね。これは例外が発生することをプログラムで事前に考慮していて、プログラマが独自に利用者がわかるようにエラーメッセージを書いています。

フリューゲル

見てみましょう。

import java.util.Scanner;

/// Lesson5. Debug
/// this is sample.
public class Lesson5_Debug
{
    public static void main(String[] arg)
    {
        try
        {
            Scanner sc = new Scanner(System.in);
            System.out.println("Please enter number.");
            String in = sc.nextLine();
            sc.close();
            int enternumber = Integer.parseInt(in);
            System.out.println("10 / number = "+Integer.toString(10/enternumber));
        }
        catch(NumberFormatException numex)
        {
            System.out.println("Error: Invalid number. Please re-enter correct number format.");
        }
        return;
    }
}

例外をキャッチする

新しいコードを見ると、try{…}、catch(){…} のようなところが増えているのがわかります。try {}で囲まれたコードの中で発生する例外は、catch {} のように処理するということを意味しています。

今回の場合、15行目の Integer.parseInt メソッドで例外が発生しました。そこにマウスをあてるとこのメソッドの説明が詳しく出てきます。ここには、このメソッドで発生する可能性がある例外が記載されています。見ての通りNumberFormatException が発生することがわかります。

Throws:
NumberFormatException – if the string does not contain a parsable integer.

なので NumberFormatException が発生したら、利用者にわかるようにメッセージを出力するために、Catch でメッセージを出力します。

        catch(NumberFormatException numex)
        {
            System.out.println("Error: Invalid number. Please re-enter correct number format.");
        }

ポイントは、Catch (キャッチする例外 変数名)の書き方です。今回の場合、NumberFormatException 例外をキャッチしたら “numex” 変数にわたってきます。そして、Catch の中にメッセージを出力するコードを書いています。

例外情報を表示する

とはいうものの、メッセージにやはりどんな例外が発生したかの詳細な情報を出力する場合は、Catch に渡された変数を利用します。

試しに、 numex. 入力してみるとどんな情報をとれるのかわかります。

今回は、getMessageメソッドでエラーの詳細も併せて出力してみます。

        catch(NumberFormatException numex)
        {
            System.out.println("Error: Invalid number. Please re-enter correct number format.");
            System.out.println("Error Detail: " + numex.getMessage());
        }

こんな感じにして、実際に出力してみると、独自のエラーメッセージと、例外の詳細な情報を出力することができます。

まとめ

これで Java 独学は終了です。このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイトや本を読んで学んだだけの方でも、挫折せず、自分で手を動かせるような構成にしていますのでぜひ、お試しください。

フリューゲル

-プログラミング
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

[初心者向け] Java 独学: 4. オブジェクト指向: インスタンス化して使用する

みなさん、こんにちは。 このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイト …

[初心者向け] Java 独学: 3. フロー制御: 分岐: その 3

みなさん、こんにちは。 このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイト …

[初心者向け] Java 独学: 2. データ型、変数、式を理解する: 算術演算子を使う

みなさん、こんにちは。 このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイト …

[初心者向け] Java 独学: 3. フロー制御: ループ

みなさん、こんにちは。 このシリーズは、Java を独学で学んでいただける方法で、初心者でも開発者としてのベースの知識ができます。実際に手を動かせるよう環境設定の方法も載せています。Java のサイト …

[初心者向け] Java 独学: はじめに

皆さんこんにちは、Blackyです。 これらからシリーズでプログラミング言語の Java を学んでいただける記事を書いていきます。Java って難しいイメージないですか? これを読めば、Java を独 …