JavaRush /Blog Java /Random-ES /6 excepciones de Java que afectan a los novatos
gram2005
Nivel 30

6 excepciones de Java que afectan a los novatos

Publicado en el grupo Random-ES
De vez en cuando me encuentro con nuevos desarrolladores que no entienden las siguientes excepciones simples y tengo que explicarles todo nuevamente. Lo más probable es que muchos desarrolladores de Java experimentados se encuentren en una situación similar y ayuden a los principiantes a afrontar las siguientes excepciones. Por lo tanto, decidí escribir este artículo y consultarlo en el futuro. Se aceptan comentarios y adiciones a la lista de exclusión. 6 excepciones de Java que afectan a los novatos - 1
  1. NoClassDefFoundError: Esta es una de esas excepciones que Exception in thread “main“ NoClassDefFoundErrora menudo dan la bienvenida a nuevos desarrolladores al mundo de la programación Java. Escriben un programa helloworld, van a la línea de comando y escriben " java ", el comando a ejecutar y "BAM" :-) Después de un tiempo, los principiantes entenderán cómo solucionar esta excepción y verán cómo se imprime su hola mundo.

    NoClassDefFoundErrorocurre cuando la Máquina Virtual Java (JVM) intenta acceder a una clase en tiempo de ejecución y la clase no se encuentra a pesar de que la misma clase estaba presente en el momento de la compilación. La mayoría de las veces, esta excepción ocurre cuando se ejecuta un programa Java mediante el comando "java" con un valor de parámetro no válido classpath. [ Classpathes un parámetro que se establece mediante la línea de comando o mediante una variable de entorno, que indica a la máquina virtual Java o al compilador Java dónde buscar clases o paquetes declarados por el usuario - aprox. traductor] Posibles motivos de exclusión:

    • Clase no disponible en Classpath.
    • A menudo, el script que se ejecuta cuando se inicia el sistema operativo cambia el valor de la variable de entorno classpath. Puede verificar esto ejecutando el setcomando " " en la línea de comando de Windows y viendo si la definición de clase está incluida en el valor classpath. Si lo desea, puede explorar más a fondo esta excepción en el blog Javarevisited .
  2. ClassNotFoundException: Исключение ClassNotFoundException это еще одно исключение, из-за которого новичкам, только начинающим программировать на Java, снятся кошмары. Интересно что для среднего разработчика нужно некоторое время чтобы перестать путать ClassNotFoundException и NoClassDefFoundError между собой. И поэтому вопрос о разнице этих двух исключений остается одним из часто задаваемых на собеседовании на позицию junior Java разработчика.
    ClassNotFoundException случается когда JVM пытается загрузить определенный класс и не обнаруживает такого же в classpath. Обычно новички сталкиваются с этим в códigoе, который подключается к базе данных используя JDBC библиотеку. Пытаясь загрузить драйвер с помощью следующего códigoа Class.forName( “JDBCdriver”). Хороший материал по ClassNotFoundException можно найти здесь. Так же рекомендуется ознакомиться и понять концепцию загрузчиков классов в Java чтобы эффективно справляться с этим исключением. Вы возможно захотите посмотреть следующую página о том Cómo настроить classpath в окружениях Win/Unix. А так, Cómo следует из documentoации Java, это исключение случается в следующих случаях:

    1. Когда пытаются загрузить класс используя метод Class.forName и файл .class не существует в classpath. Это самый частый случай из всех трех.
    2. Когда загрузчик класса пытается загрузить класс используя метод loadClass.
    3. Когда загрузчик класса пытается загрузить класс используя findSystemClass.
  3. NullPointerException: исключение NullPointerExceptionпонять легче и новички с ним справляются быстрее нежели с двумя предыдущими. В тоже время причину исключения очень легко найти так Cómo приводится номер строки где оно случилось. В первую очередь исключение случается когда JVM пытается обратиться к null в том месте где должен был быть un objeto. Чаще всего это случается когда JVM пытается вызвать метод используя un objeto и оказывается что un objeto es igual null. Другие случаи, Cómo упоминается в documentoации Java, могут быть следующими:

    1. Получая доступ к o изменяя метод un objetoа, который es igual null.
    2. Получая длину массива когда он es igual null.
    3. Получая доступ к o меняя un objetoы, которые являются заключенными в массив, который es igual null.
    Самый простой способ избежать этого исключения это добавить проверку на неes igualство null (далее – проверка на null – прим. переводчика). Поэтому рано o поздно разработчик начинает это использовать и тогда проверки на null появляются везде. Интересно что использовать везде проверку на null не считается примером хорошего программирования. Основная причина почему проверка на null используется разработчиками это передавать un objeto null в случаи ошибки. В место этого пример хорошего программирования, который должен пропагандироваться программистами, это передавать пустой un objeto когда condición для главной/рабочей ветви программы не удовлетворяется. Это в свою очередь уменьшило бы количество проверок на null. Все-таки легче говорить нежели применять это на практике.:)

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

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

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

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION