Типичные ошибки работы java программы

Сегодня поговорим о типичных ошибках, которые будут у Вас возникать при написании программ на первых порах. Здесь не нужно путать исключительные ситуации, о которых мы говорили раньше.

Первая ошибка, с которой я столкнулся будучи новичком — NullPointerException. Это ошибка инициализации переменной. Дело в том, что при создании нового объекта новички часто забывают ключевое слово new, которое этот объект и создает.

Код    
  1. package com.java;
  2.  
  3. import java.util.List;
  4.  
  5. public class OftenErrors {
  6.    
  7.     public static Object myObject;
  8.    
  9.     public static void main(String[] args){
  10.         System.out.println(myObject.hashCode());
  11.     }
  12.  
  13. }

В примере выше создается ссылка на объект myObject, но автор забывает его инициализировать. В итоге, при вызове любого его метода получает вот такое сообщение:

nullPointerException ошибка

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

Еще одна очень распространенная ошибка ArrayIndexOutOfBoundsException, которая возникает при работе с массивами или с подобными структурами данных. Тут важно понимать, что Вы просто вышли за пределы массива. Пример кода, который пытается обойти больше элементов, чем есть в массиве.

Код    
  1. package com.java;
  2.  
  3. import java.util.List;
  4.  
  5. public class OftenErrors {
  6.    
  7.     public static void main(String[] args){
  8.         int [] array = {1,3};
  9.         for (int i = 0; i < 3; i++) {
  10.             array[i] = 2;
  11.         }
  12.     }
  13.  
  14. }

При запуске данного кода мы получаем:

ошибка arrayIndexOfBound

Цифра возле ошибки указывает на диапазон, за который мы вышли. Для того, чтобы узнать где произошла данная ошибка нужно перейти по ссылке, которая находится в скобках после слога at. Программа сама Вас направит в место где возникла исключительная ситуация.

Еще одна типичная исключительная ситуация, которая может у Вас возникать — это ClassCastException — попытка преобразовать переменную с одного типа в другой.

Код    
  1. package com.java;
  2.  
  3. import java.util.List;
  4.  
  5. public class OftenErrors {
  6.    
  7.     public static void main(String[] args){
  8.         Object intVariable = new Integer(12);
  9.         String strVariable = "";
  10.         strVariable = (String) intVariable;
  11.         System.out.println(strVariable);
  12.     }
  13.  
  14. }

Результат запуска такого кода:

класс каст ошибка

Здесь решение простое: не пытайтесь приводить не приводимые типы.

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

Код    
  1. package com.java;
  2.  
  3. import java.util.List;
  4.  
  5. public class OftenErrors {
  6.    
  7.     public static void infinitRecursion(){
  8.         infinitRecursion();
  9.     }
  10.    
  11.     public static void main(String[] args){
  12.         infinitRecursion();
  13.     }
  14. }

stackoverflow error

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

Этот абзац может показаться абсурдным, но в процессе общения с новичками я пришел к выводу, что многие из них не умеют (или не хотят) пользоваться поиском в Интернете. При возникновении ошибки, которую Вы не можете решить я советую скопировать строку ошибки и просто загуглить. Зачастую поиск приведет Вас на сайт stackoverflow (созвучен с ошибкой переполнения стека), на просторах которого уже наверняка решена Ваша проблема. Не пытайтесь искать решение в рунете. Только потратите драгоценное время и нервы. Все, что касается программирования желательно гуглить на английском. Если же Вы не нашли проблему, а такое хоть и редко, но случается. Не расстраивайтесь. Просто зарегистрируйтесь на вышеупомянутом сайте и задайте вопрос там. Вам наверняка смогут помочь. Stackoverflow очень большое сообщество программистов.

Зачастую сообщения об ошибках бывают очень большими. Здесь не нужно паниковать. Если начать вчитываться в сообщение, то можно найти именно ту строку в которой говорится о причине ошибки. Чем больше Вы будете программировать, тем легче сможете находить такие строки, а потом и решение типичных ошибок.

Вроде бы все, что я хотел поведать об ошибках и их решениях. Желаю, чтобы у Вас их было поменьше.

Добавить комментарий