JavaRush /Java Blog /Random-JA /初心者を悩ませる 6 つの Java 例外
gram2005
レベル 30

初心者を悩ませる 6 つの Java 例外

Random-JA グループに公開済み
時々、次のような単純な例外を理解するのに苦労している新しい開発者に遭遇することがあります。そのため、私は彼らにすべてをもう一度説明しなければなりません。おそらく、多くの経験豊富な Java 開発者が同様の状況に陥っており、初心者が次の例外に対処できるよう支援しています。そこで、この記事を書いて今後の参考にさせていただくことにしました。コメントや除外リストへの追加は大歓迎です。 初心者を悩ませる 6 つの Java 例外 - 1
  1. NoClassDefFoundErrorException in thread “main“ NoClassDefFoundError: これは、新しい開発者を Java プログラミングの世界に歓迎することが多い例外の 1 つです。彼らは helloworld プログラムを作成し、コマンド ラインに移動して、実行するコマンドである「java」と「BAM」を書き込みます :-) しばらくすると、初心者はこの例外を修正する方法を理解し、hello world がどのように出力されるかを確認できるようになります。

    NoClassDefFoundErrorこの問題は、Java 仮想マシン (JVM) が実行時にクラスにアクセスしようとし、コンパイル時に同じクラスが存在していたにもかかわらず、そのクラスが見つからなかった場合に発生します。ほとんどの場合、この例外は、無効なパラメータ値を指定して「java」コマンドを使用して Java プログラムを実行するときに発生しますclasspath。[Classpathはコマンドラインまたは環境変数を通じて設定されるパラメータで、ユーザーが宣言したクラスまたはパッケージをどこで探すかを Java 仮想マシンまたは Java コンパイラに示します。翻訳者] 考えられる除外理由:

    • ではクラスを利用できませんClasspath
    • 多くの場合、オペレーティング システムの起動時に実行されるスクリプトによって環境変数の値が変更されますclasspathsetこれを確認するには、Windows コマンド ラインで「」コマンドを実行し、値にクラス定義が含まれているかどうかを確認しますclasspath。必要に応じて、Javarevisitedブログでこの例外をさらに詳しく調べることができます。
  2. ClassNotFoundException: Исключение ClassNotFoundException это еще одно исключение, из-за которого новичкам, только начинающим программировать на Java, снятся кошмары. Интересно что для среднего разработчика нужно некоторое время чтобы перестать путать ClassNotFoundException и NoClassDefFoundError между собой. И поэтому вопрос о разнице этих двух исключений остается одним из часто задаваемых на собеседовании на позицию junior Java разработчика.
    ClassNotFoundException случается когда JVM пытается загрузить определенный класс и не обнаруживает такого же в classpath. Обычно новички сталкиваются с этим в codeе, который подключается к базе данных используя JDBC библиотеку. Пытаясь загрузить драйвер с помощью следующего codeа Class.forName( “JDBCdriver”). Хороший материал по ClassNotFoundException можно найти здесь. Так же рекомендуется ознакомиться и понять концепцию загрузчиков классов в Java чтобы эффективно справляться с этим исключением. Вы возможно захотите посмотреть следующую page о том How настроить classpath в окружениях Win/Unix. А так, How следует из documentации Java, это исключение случается в следующих случаях:

    1. Когда пытаются загрузить класс используя метод Class.forName и файл .class не существует в classpath. Это самый частый случай из всех трех.
    2. Когда загрузчик класса пытается загрузить класс используя метод loadClass.
    3. Когда загрузчик класса пытается загрузить класс используя findSystemClass.
  3. NullPointerException: исключение NullPointerExceptionпонять легче и новички с ним справляются быстрее нежели с двумя предыдущими. В тоже время причину исключения очень легко найти так How приводится номер строки где оно случилось. В первую очередь исключение случается когда JVM пытается обратиться к null в том месте где должен был быть an object. Чаще всего это случается когда JVM пытается вызвать метод используя an object и оказывается что an object equals null. Другие случаи, How упоминается в documentации Java, могут быть следующими:

    1. Получая доступ к or изменяя метод an object, который equals null.
    2. Получая длину массива когда он equals null.
    3. Получая доступ к or меняя an objectы, которые являются заключенными в массив, который equals null.
    Самый простой способ избежать этого исключения это добавить проверку на неequalsство null (далее – проверка на null – прим. переводчика). Поэтому рано or поздно разработчик начинает это использовать и тогда проверки на null появляются везде. Интересно что использовать везде проверку на null не считается примером хорошего программирования. Основная причина почему проверка на null используется разработчиками это передавать an object null в случаи ошибки. В место этого пример хорошего программирования, который должен пропагандироваться программистами, это передавать пустой an object когда condition для главной/рабочей ветви программы не удовлетворяется. Это в свою очередь уменьшило бы количество проверок на null. Все-таки легче говорить нежели применять это на практике.:)

  4. ClassCastException: это еще одно из исключений, с которым знакомятся новички когда пытаются привести an object к классу, экземпляром которого он не является. Опять же его довольно легко понять, найти причину и исправить. Один из способов избежать этого исключения, когда во время исполнения тип an object не известен, это использовать проверку является ли an object экземпляром определенного класса: “instanceof”.

  5. ArrayIndexOutOfBoundsException: название этого исключения говорит само за себя. Оно случается когда JVM пытается получить доступ к элементу массива используя неверный индекс, на пример, отрицательный (-1) or больший or равный размеру массива. Его легко понять, найти причину и исправить. Следующий пример codeа поможет избежать этого исключения: for( index = 0; index < array.length; index++ )
    Обратите внимание что индекс начинается с 0 и возрастает до величины на 1 меньше размера массива.

  6. IllegalArgumentException: Это исключение самое простое, его легко понять, найти его причину и исправить. Оно случается когда JVM пытается передать методу неподходящий аргумент or аргумент неправильного типа.

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION