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

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

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

Код   
package com.java;

import java.util.List;

public class OftenErrors {
   
    public static Object myObject;
   
    public static void main(String[] args){
        System.out.println(myObject.hashCode());
    }

}

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

nullPointerException ошибка

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

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

Код   
package com.java;

import java.util.List;

public class OftenErrors {
   
    public static void main(String[] args){
        int [] array = {1,3};
        for (int i = 0; i < 3; i++) {
            array[i] = 2;
        }
    }

}

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

ошибка arrayIndexOfBound

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

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

Код   
package com.java;

import java.util.List;

public class OftenErrors {
   
    public static void main(String[] args){
        Object intVariable = new Integer(12);
        String strVariable = "";
        strVariable = (String) intVariable;
        System.out.println(strVariable);
    }

}

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

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

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

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

Код   
package com.java;

import java.util.List;

public class OftenErrors {
   
    public static void infinitRecursion(){
        infinitRecursion();
    }
   
    public static void main(String[] args){
        infinitRecursion();
    }
}

stackoverflow error

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

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

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

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

Leave a Comment

Your email address will not be published.