Легкий доход за которым гонятся 6 букв

Легкий доход за которым гонятся 6 букв Перевод: 6 Java Exceptions каковые преследуют новичков в Java.

6 Java Exceptions каковые преследуют новичков в Java.

(Я сам новичок и в Java и в English, исходя из этого буду рад помощи и критике)

И раньше и по сей день, я сталкиваюсь со многими новичками в Java, у которых появляется неприятность с несколькими довольно часто видящимися исключениями, каковые я обязан растолковывать в очередной раз. Я верю что такая же неприятность у других Senior Java разработчиков, каковые пробуют оказать помощь новичкам совладать с этими исключениями. Так я писал эту статью и для собственного развития.

Пожалуйста не стесняйтесь комментировать эту статью либо додавать исключения в нижеследующий перечень.

Это одно из тех исключений, с таким сообщением как «Exception in thread “main” семь дней». которое значительно чаще встречает новичков Java разработчиков в мире программирования Java. Новичок пишет программу выводящую «Hello world!», переходит в командную строчок, набирает «java …», жмет enter и БАЦ! =). И выяснение как же вынудить программу вывести «Hello world!» на монитор, занимает какое-то время.

NoClassDefFoundError происходит, в то время, когда виртуальная машина Java (JVM), пробует получить доступ к классу на протяжении запуска и класс не находит, не обращая внимания на то, что данный же класс был отыскан на протяжении компиляции. Чаще всего это исключение происходит на протяжении попытки выполнить программу посредством команды «java», а classpath не установлен как нужно. Вот описание обстоятельств по которым появляется это исключение.

  • Класс не дешёв в -classpath.
  • Переопределена переменная среды CLASSPATH. Проверить ее корректность и наличие возможно посредством команды Windows «set» .

Более детально решение проблемы обрисовано тут.

Причем нужно осознать отличие между переменной окружения CLASSPATH и ключом интерперетатора -classpath. Специалисты не рекомендуют применять CLASSPATH. Наилучшим методом считается передача ключа -classpath интерпретатору.

ClassNotFoundException это еще одно исключение, которое становиться кошмаром для новичка, когда он начинает программировать. Примечательно, что у среднестатистического Java разработчика довольно часто появляется путаница между ClassNotFoundException и NoClassDefFoundError исключениями. И, так, отличие между этими двумя исключениями остается одним из чаще всего задаваемых вопросов в собеседованиях на позицию Junior-a. ClassNotFoundException появляется в то время, когда JVM пробует загрузить определенный класс и не находит его в classpath.

Одно из распространенных мест, где новичок Java разработчик сталкивается с ним в первый раз, подключение к базе данных, применяя JDBC библиотеку. В том месте мы попытаемся загрузить драйвер применяя код типа Class.forName(«JDBCdriver»). Хорошая статья про ClassNotFoundException лежит тут. Постараться осознать концепцию Java Classloaders это самый эффективный способ разобраться с данной проблемой.

Вы имеете возможность почитать как настроить Java classpath в Win / Unix среде. Как указанно в java docs. исключение происходит в следующих случаях:

  • При попытке загрузить класс, применяя способ Class.forName, а файл .class отсутствует в classpath.

Это самый распространенный сценарий из трех перечисленных тут.

  • В то время, когда загрузчик классов пробует загрузить класс посредством способа loadClass.
  • В то время, когда загрузчик классов пробует загрузить класс, применяя findSystemClass.
  • Это исключение несложнее для понимания новичками чем первые два. Тем более это исключение легко идентифицируется т.к. при его происхождении, в сообщении о происхождении исключения указывается номер строчка в программе, где оно случилось. Это исключение появляется в то время, когда JVM пробует получить доступ к объекту либо пробует привести к методу объекта, а вместо ссылки на объект приобретает null. Так же в Java Doc указаны следующие обстоятельства:

    • Доступ либо трансформации способа на объекте, что есть недействительным. (т.е. вместо ссылки на объект JVM приобретает null)
    • Получение длину массива, в то время, когда он есть недействительным. (не инициализированный к примеру)
    • Попытка доступа к несуществующему элементу массива типа Object. (т.е. В то время, когда вместо ссылки на объект элемент массива содержит null)

    самый простой способ избежать этого исключения, применение проверки на не-NULL. Однако, непременно, это делается практикой Java разработки, и вы станете везде обнаружить проверки на не-NULL.Примечательно, что вставлять везде проверки на не-NULL, не считается хорошим стилем программирования. И главной причиной применения проверки не-NULL, есть то, что разработчик желает передать null объект при сбоя либо неточности.

    Вместо этого хорошая практики программирования. которую должны применять программисты, это возврат безлюдного объекта, вместо значения null. как главная логика поведения программы при неточности. Однако, принятие данной практики программирования сложнее чем думается.

    Про это имеется хорошая статья на отечественном ресурсе.

    Это еще одно привычное новичкам исключение, появляющееся при попытки приведения объекта к классу, что не есть его подклассом. Снова же, это достаточно легко понять, идентифицировать и просто исправить. Один из дорог избежать этого исключения, в то время, когда тип объекта малоизвестен на протяжении исполнения, есть применение «InstanceOf». для проверки того, что объект есть экземпляром определенного класса.

    Это исключение не требует пояснений и происходит, в то время, когда JVM пробует получить доступ к элементу массива с несуществующим индексом, к примеру отрицательным (-1) либо больше либо равному размеру массива. Оно достаточно легко понимается, определяется и исправляется. К примеру при создании цикла

    появляется исключение, т. к. в массиве индексы идут с 0, а способ length возвращает количество элементов, а количество больше на 1 чем значение последнего индекса. Верно применять

    Это исключение менее распространено и достаточно легко понимается, выявляется и устраняется. Оно появляется в то время, когда JVM пробует привести к несуществующему методу, либо способ с неверным доводом.

    Источник: info.javarush.ru

    e p p2r

    Интересные записи

    Похожие статьи, которые вам, наверника будут интересны: