Blacky Blog

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

IT プログラミング

[初心者向け] Java 独学: 5. コンパイルとデバッグ: エラーの種類

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

みなさん、こんにちは。

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

CodeCampGATE

[初心者向け] Java 独学: 5. コンパイルとデバッグ: エラーの種類

今回は、プログラミングで発生するエラーの種類について紹介します。

1. 動かす前のエラー

まずは、プログラムを動かす前のエラーです。これは、例えば、int 型の変数に文字列を入れようとしたり、if 文を書く時に “ef” とか書いてしまい間違っていた場合に発生します。

public class Lesson5_Error
{
    public static void main(String[] arg)
    {
        int a = "Blacky"; // Error1. Set Invalid type value

        ef(a>0) // Error2. Mistake typing
            return;

        return;
    }
}

Java のプログラムは動かす前にコンパイルという処理が行われます。その中で上記のようなエラーがないかチェックされます。この時点で発生するエラーは解決しないと実際に動かせません。

コンパイルの実行

ではコンパイルしてみましょう。コンパイルするには、javac コマンドを実行します。

まず、上記のソースコードを配置している場所を確認します。

続いて、コマンドプロンプトを起動してそこに行きます。ポイントは、対象のソースが配置されているフォルダに一つ上に移動します。

そして実行します。ポイントは、javac <フォルダ名>/<ファイル名>.java です。

> javac User/Lesson5_Error.java

するとコンパイルエラーが発生しているのがわかります。さらに 7 行目で発生していることもわかります。

コードに戻ると、7行目は if 文を間違って書いている箇所です。

では修正します。

そして再度、コンパイルします。すると別のエラーが出ます。これは、5行目のコードに対して、文字列はint に変換できないというエラーです。

修正します。

再度コンパイルします。するとエラーがなくなりました。

これでコンパイルは成功したことを意味しています。つまり、プログラムを実行できる状態になりました。

CodeCampGATE

動かしたあとのエラー

次に動かしたあとのエラーです。これはややこしいです。

import java.util.Scanner;

public class Lesson5_Error
{
    public static void main(String[] arg)
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("How old are you?");
        String in = sc.nextLine();
        sc.close();
        int add10years = Integer.parseInt(in)+10;
        System.out.println("Your next 10year: "+Integer.toString(add10years));
        return;
    }
}

このコードは、年齢を入力してもらい、10年後の年齢を出力するという簡単なプログラムです。上記は30と入力したら、10年後が40なので40が出力されました。もちろんコンパイルは成功しコードは、問題なさそうに見えます。では次の入力をしてきたらどうでしょうか。

なんとひらがなを入力してきたのです。すると、エラーが発生します。

見ると、11行目の Interger.parseInt メソッドでエラーが発生しています。つまり、ひらがなを数字に変換できないからです。

このように、動作しないとわからないエラーは、なぜややこしいかというと、条件によってエラーが出るときとできないときがあるからです。コンパイルみたいに誰かがチェックしてくれるわけではないので間違いに気づきづらいです。そのため、このエラーを見つけるにはテストが必要になります。

まとめ

このようにエラーにも 2 種類あることがわかりました。次回は、よりエラー発生したときに深く原因を追究するためのデバッグについて紹介します。

CodeCampGATE

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

執筆者:


comment

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

関連記事

[初心者向け] Java 独学: 2. データ型、変数、式を理解する: 配列を操作する

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

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

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

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

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

ネットワークエンジニアとしての基礎: 2. ハードウェアの理解: スイッチ

みなさん、こんにちは。 このシリーズは、ネットワークエンジニアとしてスキルを身に着け、転職する方やフリーランスとして働く方に向け、ネットワークエンジニアとして必要なスキルを学ぶための入門シリーズです。 …

[初心者向け] Java 独学: 2. データ型、変数、式を理解する: データ型を変換する

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