JavaRush /Java Blog /Random-KO /초보자를 괴롭히는 6가지 Java 예외
gram2005
레벨 30

초보자를 괴롭히는 6가지 Java 예외

Random-KO 그룹에 게시되었습니다
때때로 나는 다음과 같은 간단한 예외를 이해하는 데 어려움을 겪는 새로운 개발자를 만나서 그들에게 모든 것을 다시 설명해야 합니다. 경험이 풍부한 많은 Java 개발자는 비슷한 상황에 처해 있으며 초보자가 다음 예외에 대처하도록 돕습니다. 그래서 이 글을 작성하고 나중에 참고하기로 했습니다. 제외 목록에 대한 의견과 추가를 환영합니다. 초보자를 괴롭히는 6가지 Java 예외 - 1
  1. NoClassDefFoundErrorException in thread “main“ NoClassDefFoundError: 이는 새로운 개발자를 Java 프로그래밍의 세계로 초대하는 경우가 많은 예외 중 하나입니다 . 그들은 helloworld 프로그램을 작성하고, 명령줄로 이동하여 " java "(실행 명령 및 "BAM")를 작성합니다. :-) 잠시 후 초보자는 이 예외를 수정하는 방법을 이해하고 hello world가 어떻게 인쇄되는지 확인할 수 있습니다.

    NoClassDefFoundErrorJVM(Java Virtual Machine)이 런타임에 클래스에 액세스하려고 시도하고 컴파일 타임에 동일한 클래스가 있었음에도 불구하고 클래스를 찾을 수 없을 때 발생합니다. 대부분의 경우 이 예외는 잘못된 매개변수 값을 사용하여 "java" 명령을 통해 Java 프로그램을 실행할 때 발생합니다 classpath. [ Classpath는 명령줄이나 환경 변수를 통해 설정되는 매개변수로, 사용자가 선언한 클래스나 패키지를 찾을 위치를 Java 가상 머신이나 Java 컴파일러에 나타냅니다. 번역자] 제외될 수 있는 이유:

    • 에서는 클래스를 사용할 수 없습니다 Classpath.
    • 운영 체제가 시작될 때 실행되는 스크립트는 종종 환경 변수의 값을 변경합니다 classpath. Windows 명령줄에서 " " 명령을 실행 set하고 클래스 정의가 값에 포함되어 있는지 확인하면 이를 확인할 수 있습니다 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