Как исправить ошибки java?

Содержание:

Conclusion

This article took a look at what Null Pointer Exception is in Java, and how this error occurs. We also looked at a piece of code that will cause a Null Pointer Exception to understand how Null Pointers are created in real-life situations. Finally, we set down to identify some of the top ways to fix a Null Pointer Exception and ended our discussion by contrasting between two methods of fixing NPEs.

If you are looking to write Java programs, a Null Pointer Exception is one of the essential bugs that you must know how to fix. This exception is one of the most frequent issues and is not related to your code’s syntax or semantics. This makes the exception one of the trickiest problems to identify and fix. A quick reference for fixing the issue like this article is bound to make your experience smoother.

Причины ошибок в файле Java Error 500 Java.Lang.Nullpointerexception

Проблемы Java и Java Error 500 Java.Lang.Nullpointerexception возникают из отсутствующих или поврежденных файлов, недействительных записей реестра Windows и вредоносных инфекций.

Более конкретно, данные ошибки Java Error 500 Java.Lang.Nullpointerexception могут быть вызваны следующими причинами:

  • Недопустимые разделы реестра Java Error 500 Java.Lang.Nullpointerexception/повреждены.
  • Вредоносные программы заразили Java Error 500 Java.Lang.Nullpointerexception, создавая повреждение.
  • Другая программа злонамеренно или по ошибке удалила файлы, связанные с Java Error 500 Java.Lang.Nullpointerexception.
  • Другая программа находится в конфликте с Java и его общими файлами ссылок.
  • Java/Java Error 500 Java.Lang.Nullpointerexception поврежден от неполной загрузки или установки.

Продукт Solvusoft

Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11

Как избегать исключения NullPointerException

Существует множество техник и инструментов для того, чтобы избегать появления NullPointerException. Рассмотрим наиболее популярные из них.

Проверяйте на null все объекты, которые создаются не вами

Если объект создаётся не вами, иногда его стоит проверять на null, чтобы избегать ситуаций с NullPinterException. Здесь главное определить для себя рамки, в которых объект считается «корректным» и ещё «некорректным» (то есть невалидированным).

Не верьте входящим данным

Если вы получаете на вход данные из чужого источника (ответ из какого-то внешнего сервиса, чтение из файла, ввод данных пользователем), не верьте этим данным. Этот принцип применяется более широко, чем просто выявление ошибок NPE, но выявлять NPE на этом этапе можно и нужно. Проверяйте объекты на null. В более широком смысле проверяйте данные на корректность, и консистентность.

Возвращайте существующие объекты, а не null

Если вы создаёте метод, который возвращает коллекцию объектов – не возвращайте null, возвращайте пустую коллекцию. Если вы возвращаете один объект – иногда удобно пользоваться классом Optional (появился в Java 8).

4 ответа 4

Когда вы объявляете переменную ссылочного типа, на самом деле вы создаете ссылку на объект данного типа. Рассмотрим следующий код для объявления переменной типа int:

В этом примере переменная x имеет тип int и Java инициализирует её как 0. Когда вы присвоите переменной значение 10 (вторая строка), это значение сохранится в ячейке памяти, на которую ссылается x .

Но когда вы объявляете ссылочный тип, процесс выглядит иначе. Посмотрим на следующий код:

В первой строке объявлена переменная num , ее тип не относится к встроенному, следовательно, значением является ссылка (тип этой переменной, Integer , является ссылочным типом). Поскольку вы еще не указали, на что собираетесь ссылаться, Java присвоит переменной значение Null , подразумевая «Я ни на что не ссылаюсь».

Во второй строке, ключевое слово new используется для создания объекта типа Integer . Этот объект имеет адрес в памяти, который присваивается переменной num . Теперь, с помощью переменной num вы можете обратиться к объекту используя оператора разыменования . .

Исключение, о котором вы говорите в вопросе, возникает, если вы объявили переменную, но не создали объект, то есть если вы попытаетесь разыменовать num до того, как создали объект, вы получите NullPointerException . В самом простом случае, компилятор обнаружит проблему и сообщит, что

Что говорит: «возможно, переменная num не инициализирована».

Иногда исключение вызвано именно тем, что объект действительно не был создан. К примеру, у вас может быть следующая функция:

В этом случае создание объекта (переменная num ) лежит на вызывающем коде, то есть вы предполагаете, что он был создан ранее – до вызова метода doSomething . К сожалению, следующий вызов метода вполне возможен:

В этом случае значение переменной num будет null . Лучшим способом избежать данного исключения будет проверка на равенство нулю. Как результат, функция doSomething должна быть переписана следующим образом:

Как альтернативный вариант предыдущему примеру вы можете сообщить вызывающему коду, что метод был вызван с неверными параметрами, например, с помощью IllegalArgumentException .

Ошибка возникает при попытке установить версию Minecraft через TLauncher.

Распространенные сообщения об ошибках в Java Error 500 Java.Lang.Nullpointerexception

Типичные ошибки Java Error 500 Java.Lang.Nullpointerexception, возникающие в Java для Windows:

  • «Ошибка в приложении: Java Error 500 Java.Lang.Nullpointerexception»
  • «Недопустимая программа Win32: Java Error 500 Java.Lang.Nullpointerexception»
  • «Извините за неудобства — Java Error 500 Java.Lang.Nullpointerexception имеет проблему. «
  • «К сожалению, мы не можем найти Java Error 500 Java.Lang.Nullpointerexception. «
  • «Отсутствует файл Java Error 500 Java.Lang.Nullpointerexception.»
  • «Ошибка запуска программы: Java Error 500 Java.Lang.Nullpointerexception.»
  • «Не удается запустить Java Error 500 Java.Lang.Nullpointerexception. «
  • «Ошибка Java Error 500 Java.Lang.Nullpointerexception. «
  • «Неверный путь к приложению: Java Error 500 Java.Lang.Nullpointerexception.»

Проблемы Java Error 500 Java.Lang.Nullpointerexception с участием Javas возникают во время установки, при запуске или завершении работы программного обеспечения, связанного с Java Error 500 Java.Lang.Nullpointerexception, или во время процесса установки Windows. Документирование проблем Java Error 500 Java.Lang.Nullpointerexception в Java является ключевым для определения причины проблем с электронной Windows и сообщения о них в Oracle Corporation.

The common cause of NullPointerException in Java as Example

Based upon my experience java.lang.NullPointerException repeats itself in various formats, I have collected the most common cause of java.lang.NullPointerException in java code and explained them here, we will use the following Trade class for example :

publicclass Trade {private String symbol;privateint price;publicstatic String market;public Trade(String symbol, int price){this.symbol = symbol;this.price = price;}publicint getPrice(){return price;}publicvoid setPrice(int price){this.price = price;}public String getSymbol(){return symbol;}publicvoid setSymbol(String symbol){this.symbol = symbol;}}

1)  Java  NullPointerException while calling instance method on null object

This is probably the most common cause of this error, you call method on some object and found that the reference is null, always perform null check if you see possibility of null before calling any method on object.

Trade pennyStock = null;pennyStock.getPrice(); //this will throw NullPointerExceptionException in thread «main» java.lang.NullPointerExceptionat test.NullPointerExceptionTest.main(NullPointerExceptionTest.java:23)

2) NullPointerException in Java while accessing field on a null reference.

Trade fxtrade = null;int price = fxtrade.price; //here fxtrade is null, you can’t access field hereException in thread «main» java.lang.NullPointerExceptionat test.NullPointerExceptionTest.main(NullPointerExceptionTest.java:64)

3) java.lang.NullPointerException when throwing null as an exception.

If you throw an Exception object and if that is null you will get a null pointer exception as shown in the below example

RuntimeException nullException = null;throw nullException;Exception in thread «main» java.lang.NullPointerExceptionat test.NullPointerExceptionTest.main(NullPointerExceptionTest.java:74)

4) example of NullPointerException is when getting the length of an array that is null.

Trade[] bluechips = null;int length = bluechips.length;  //array is null hereException in thread «main» java.lang.NullPointerExceptionat test.NullPointerExceptionTest.main(NullPointerExceptionTest.java:85)

5) Example of NPE when accessing an element of a null array.

Trade[] bluechips = null;Trade motorola = bluechips; //array is null hereException in thread «main» java.lang.NullPointerExceptionat test.NullPointerExceptionTest.main(NullPointerExceptionTest.java:94)

6) You will also get NullPointerException in Java if you try to synchronize on a null object or try to use the null object inside the synchronized block in Java.

Trade highbetaTrade = null;synchronized(highbetaTrade){System.out.print(«This statement is synchronized on null»);}

Exception in thread «main» java.lang.NullPointerExceptionat test.NullPointerExceptionTest.main(NullPointerExceptionTest.java:104)

What if we must allow NullPointerException in Some Places

Joshua bloch in effective java says that “Arguably, all erroneous method invocations boil down to an illegal argument or illegal state, but other exceptions are standardly used for certain kinds of illegal arguments and states. If a caller passes null in some parameter for which null values are prohibited, convention dictates that be thrown rather than .”

So if you must allow in some places in your code then make sure you make them more informative than they usually are.

Take a look at the below example:

Output of both method calls is this:

Clearly, the second stack trace is more informative and makes debugging easy. Use this in the future.

I am done with my experience around NullPointerException. If you know other points around the topic, please share with all of us !!

Happy Learning !!

How to Fix java.lang.NullPointerException Error

Creating a Null Pointer Exception is easy, but avoiding or fixing it is tricky. While some integrated development environments (IDEs) warn you if you are accessing a variable before initializing it with some compatible value, most IDEs can not figure this out in complex situations, such as when passing a variable through multiple method calls. The exact fix for a Null Pointer Exception depends upon your situation and code. Here are some of the top ways to fix common Null Pointer scenarios:

Check Your Code For Manual Errors

The biggest reason why Null Pointer Exceptions occur is human error. Make sure the program you have written carries the correct logic that you had initially intended. Also, run your eyes through the source code to check if you have missed out any statements, or misspelled any variables which may have led to some variable not being assigned a value.

Ensure that you have written your code the way your logic directs you to, and you have not missed out on writing any statements, or have not assigned objects to wrong references. As a rule of thumb, check that before any variable is used, it is initialized with an object.

Put Safety Checks Around Code That May Cause Null Pointer Exception

If you know the line of code that is causing your NullPointer and believe your logic is correct as well, you can wrap the section of code in a try-catch block, and define the behavior for when a Null Pointer is caught. This is how such a set-up will look like:

...
// Some code above

try {
  // Put the exception-prone code here
} catch (NullPointerException npe) {
  // Define what needs to be done when an NPE is caught
}

// Some code below
...

This happens in situations where a certain reference variable may or may not contain null. More often than not, remote API responses, device interface responses are prone to this scenario. Depending upon the availability of a result or hardware, the response variable may or may not point to an instantiated object. Using safety checks is best-suited to handle these situations.

Check For Null Before Accessing Something

This method is similar to the try-catch method. In this method, an ‘if’ block is used to check for null values before accessing a variable. Here’s how the previous snippet of code would look like if an ‘if’ block is used to catch the error:

...
// Some code above

If (myVar !== null ) {
  // Put the success logic here
} else {
  // Handle null value here
}

// Some code below
...

The biggest difference between the two methods is the scope of checks that they do. The if method checks the myVar variable only for null values, while the try-catch block catches any and all variables that are null.

This makes the ‘if’ block a more targeted and clean approach to accommodating null pointers in your application logic. However, if there is more than one variable that may be null, it is better to go with a try-catch block for simplicity.

Исключение java.lang.NoClassDefFoundError

Существует два варианта. Первый из них – когда программист предоставляет полное имя класса, помня, что при запуске Java программы, нужно просто дать имя класса, а не расширение.

pankaj@Pankaj:~/CODE/Java7Features/bin$java com/journaldev/util/ExceptionInMain.class

Exception in thread "main" java.lang.NoClassDefFoundError: com/journaldev/util/ExceptionInMain/class

Caused by: java.lang.ClassNotFoundException: com.journaldev.util.ExceptionInMain.class

at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Второй тип исключения происходит, когда Класс не найден.

pankaj@Pankajs-MacBook-Pro:~/CODE/Java7Features/bin/com/journaldev/util$java ExceptionInMain

Exception in thread "main" java.lang.NoClassDefFoundError: ExceptionInMain (wrong name: com/journaldev/util/ExceptionInMain)

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:791)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)

at java.net.URLClassLoader.access$100(URLClassLoader.java:71)

at java.net.URLClassLoader$1.run(URLClassLoader.java:361)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

at java.lang.ClassLoader.loadClass(ClassLoader.java:423)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

at java.lang.ClassLoader.loadClass(ClassLoader.java:356)

at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:480)

Подробнее узнать об ошибке java.lang.NoClassDefFoundError.

What is java.lang.NullPointerException?

The Null Pointer Exception is one of the several Exceptions supported by the Java language. This indicates that an attempt has been made to access a reference variable that currently points to null.

Null is the default value in Java assigned to the variables which are not initialized by the user after or with a declaration. Consider the following example where you declare a variable like this:

String str;

And then try to print the contents of the variable:

System.out.println(str);
// => null

As can be seen above, ‘null’ gets printed on the output. This shows that since the variable str is uninitialized, it currently points to, or holds the value, null. The issue that a null pointing variable poses is that the variable is only a reference, and it does not point to anything. If you try to carry out some operations on the data stored in a null pointing variable, the system will not know what to do. This happens because there is no data actually stored in the variable; it points to a void entity.

How to fix NullPointerException

java.lang.NullPointerException is an unchecked exception, so we don’t have to catch it. The null pointer exceptions can be prevented using null checks and preventive coding techniques. Look at below code examples showing how to avoid .

if(mutex ==null) mutex =""; //preventive coding
		
synchronized(mutex) {
	System.out.println("synchronized block");
}
//using null checks
if(user!=null && user.getUserName() !=null) {
System.out.println("User Name: "+user.getUserName().toLowerCase());
}
if(user!=null && user.getUserName() !=null) {
	System.out.println("User ID: "+user.getUserId().toLowerCase());
}

Решение ошибки Java.net.ConnectException

Ошибка модуля Java.net.ConnectException: Connection timed out возникает во время загрузки игры на сервере.

Перед устранением убедитесь в отсутствии следующих причин:

  • технические работы на сервере;
  • окончание возможности пользоваться платными услугами;
  • отсутствие подключения интернета от провайдера на компьютере в целом;
  • блокировка игрока по IP.

Если перечисленных проблем не замечено, обратите внимание на такие факторы:

  1. Актуальность версии игры. Если подключиться к серверу невозможно, проверьте наличие обновлений Minecraft. Конфликт файлов неизбежно приведет к ошибке. Достаточно доступа к интернету и возможности загрузки новых пакетов.
  2. Желание установить новые моды и патчи приводит к тому, что необкатанное ПО блокирует подключение к серверу. Удалите последние дополнения или переустановите игру. Чтобы предотвратить ошибку, используйте проверенные расширения.
  3. Блокировка брандмауэра или антивируса заслуживает отдельного внимания. Явно определить источник проблемы не получится. Пользователю придется отключать программы для защиты компьютера по очереди.

Вопрос: Как определить причину исключения NPE в моем коде?

Это трудная часть. Короткий ответ заключается в применении логического вывода к доказательствам, предоставленным трассировкой стека, исходным кодом и соответствующей документацией API.

Сначала проиллюстрируем простой пример (см. выше). Мы начнем с просмотра строки, о которой рассказывал нам стек, где находится NPE:

Как это может вызвать NPE?

На самом деле существует только один способ: это может произойти только в том случае, если имеет значение . Затем мы пытаемся запустить метод на и… BANG!

Но (я слышал, вы говорите), что, если NPE был брошен внутри вызова метода ?

Хорошо, если это произошло, трассировка стека будет выглядеть по-другому. В первой строке «at» будет указано, что исключение было выбрано в некоторой строке класса , а строка 4 из будет второй строкой «at» .

Итак, откуда взялось это ? В этом случае это очевидно, и очевидно, что нам нужно сделать, чтобы исправить это. (Назначьте ненулевое значение .)

Хорошо, давайте попробуем немного более хитрый пример. Для этого потребуется некоторый логический вывод.

Итак, теперь у нас есть две строки «at» . Первый для этой строки:

а второй — для этой строки:

Глядя на первую строчку, как это может вызвать NPE? Существует два способа:

  • Если значение равно , тогда будет вызывать NPE.
  • Если значение равно , то вызов на нем вызовет NPE.

Затем нам нужно выяснить, какой из этих сценариев объясняет, что на самом деле происходит. Мы начнем с изучения первого:

Откуда ? Это параметр для вызова метода , и если мы посмотрим, как был вызван , мы можем видеть, что он исходит из статической переменной . Кроме того, мы можем ясно видеть, что мы инициализировали ненулевому значению. Этого достаточно, чтобы условно отвергнуть это объяснение. (Теоретически что-то другое могло бы изменить на … но этого здесь не происходит.)

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

В самом деле, это так! И в этом проблема. Когда мы инициализируем так:

мы выделяем двумя элементами, которые инициализируются . После этого мы не изменили содержимое … так что все равно будет .

Как исправить ошибку java.lang.nullpointerexception

Как избавиться от ошибки java.lang.nullpointerexception? Способы борьбы с проблемой можно разделить на две основные группы – для пользователей и для разработчиков.

Для пользователей

Если вы встретились с данной ошибкой во время запуска (или работы) какой-либо программы (особенно это касается java.lang.nullpointerexception minecraft), то рекомендую выполнить следующее:

  1. Переустановите пакет Java на своём компьютере. Скачать пакет можно, к примеру, вот отсюда;
  2. Переустановите саму проблемную программу (или удалите проблемное обновление, если ошибка начала появляться после такового);
  3. Напишите письмо в техническую поддержку программы (или ресурса) с подробным описанием проблемы и ждите ответа, возможно, разработчики скоро пофиксят баг.
  4. Также, в случае проблем в работе игры Майнкрафт, некоторым пользователям помогло создание новой учётной записи с административными правами, и запуск игры от её имени.

Java ошибка в Майнкрафт

Для разработчиков

Разработчикам стоит обратить внимание на следующее:

  1. Вызывайте методы equals(), а также equalsIgnoreCase() в известной строке литерала, и избегайте вызова данных методов у неизвестного объекта;
  2. Вместо toString() используйте valueOf() в ситуации, когда результат равнозначен;
  3. Применяйте null-безопасные библиотеки и методы;
  4. Старайтесь избегать возвращения null из метода, лучше возвращайте пустую коллекцию;
  5. Применяйте аннотации @Nullable и @NotNull;
  6. Не нужно лишней автоупаковки и автораспаковки в создаваемом вами коде, что приводит к созданию ненужных временных объектов;
  7. Регламентируйте границы на уровне СУБД;
  8. Правильно объявляйте соглашения о кодировании и выполняйте их.

Что из себя представляет исключение Null Pointer Exception ( java.lang.NullPointerException ) и почему оно может происходить?

Какие методы и средства использовать, чтобы определить причину возникновения этого исключения, приводящего к преждевременному прекращению работы приложения?

Java Lang Nullpointerexception Hatası Nedenleri

NullPointerException bir çalışma zamanı istisnasıdır, bu yüzden onu programda yakalamamıza gerek yoktur. NullPointerException,  bir nesnenin gerekli olduğu yerlerde null üzerinde bazı işlemler yapmaya çalıştığımızda bir uygulamada ortaya çıkar. Java programlarında NullPointerException’ın yaygın nedenlerinden bazıları şunlardır:

  1. Bir nesne örneğinde bir yöntemi çağırmak, ancak çalışma zamanında nesne boştur.
  2. Çalışma zamanında boş olan bir nesne örneğinin değişkenlerine erişim.
  3. Programda boş bırakma
  4. Boş olan bir dizinin dizinine erişme veya dizinin değerini değiştirme
  5. Çalışma zamanında boş olan bir dizinin uzunluğunu kontrol etme.

Coding Best Practices to avoid NullPointerException

1. Let’s consider the below function and look out for scenario causing null pointer exception.

public void foo(String s) {
    if(s.equals("Test")) {
	System.out.println("test");
    }
}

The NullPointerException can occur if the argument is being passed as null. The same method can be written as below to avoid NullPointerException.

public void foo(String s) {
	if ("Test".equals(s)) {
		System.out.println("test");
	}
}

2. We can also add null check for argument and throw  if required.

public int getArrayLength(Object[] array) {
	
	if(array == null) throw new IllegalArgumentException("array is null");
	
	return array.length;
}

3. We can use ternary operator as shown in the below example code.

String msg = (str == null) ? "" : str.substring(0, str.length()-1);

4. Use  rather than  method. For example check PrintStream println() method code is defined as below.

public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }

The below code snippet shows the example where the valueOf() method is used instead of toString().

Object mutex = null;

//prints null
System.out.println(String.valueOf(mutex));

//will throw java.lang.NullPointerException
System.out.println(mutex.toString());

5. Write methods returning empty objects rather than null wherever possible, for example, empty list, empty string, etc.

6. There are some methods defined in collection classes to avoid NullPointerException, you should use them. For example contains(), containsKey(), and containsValue().

Reference: API Document

Common Places Where NPEs Occur?

Well, NullPointerException can occur anywhere in the code for various reasons but I have prepared a list of the most frequent places based on my experience.

  1. Invoking methods on an object which is not initialized
  2. Parameters passed in a method are
  3. Calling method on object which is
  4. Comparing object properties in block without checking equality
  5. Incorrect configuration for frameworks like Spring which works on dependency injection
  6. Using on an object which is
  7. Chained statements i.e. multiple method calls in a single statement

This is not an exhaustive list. There are several other places and reasons also. If you can recall any such other, please leave a comment. it will help others also.

When does NullPointerException occur in Java?

Javadoc of java.lang.NullPointerException has outlined scenario when it could occur:

1) When you call the instance method on a null object. you won’t get a null pointer exception if you call a static method or class method on the null object because the static method doesn’t require an instance to call any method.

2) While accessing or changing any variable or field on a null object.

3) Throwing null when an Exception is expected to throw.

4) When calling the length of an array when the array is null.

5) Accessing or changing slots of null just like an array.

6) When you try to synchronize on a null object or using null inside the synchronized block in Java.

Now, we will see examples of NullPointerException for each of the above scenarios to get it right and understand it better. You can also see these free Java programming courses to learn more about NullPointerException in Java. 

Вопрос: Как я прочитал стек стека NPE?

Предположим, что я компилирую и запускаю программу выше:

Первое наблюдение: компиляция завершается успешно! Проблема в программе НЕ является ошибкой компиляции. Это ошибка времени выполнения. (Некоторые IDE могут предупредить, что ваша программа всегда будет генерировать исключение… но стандартный компилятор не делает.)

Второе наблюдение: при запуске программы он выводит две строки «gobbledy-gook». НЕПРАВИЛЬНО!!. Это не ласково. Это stacktrace… и он предоставляет важную информацию, которая поможет вам отследить ошибку в вашем коде, если вы потратите время, чтобы внимательно прочитать ее.

Итак, давайте посмотрим, что он говорит:

Первая строка трассировки стека сообщает вам несколько вещей:

  • Он сообщает вам имя потока Java, в котором было выбрано исключение. Для простой программы с одним потоком (как этот) она будет «основной». Позвольте двигаться дальше…
  • Он сообщает вам полное имя исключения, которое было выбрано; т.е. .
  • Если у исключения есть связанное сообщение об ошибке, оно будет выведено после имени исключения. является необычным в этом отношении, потому что он редко имеет сообщение об ошибке.

Вторая строка является наиболее важной при диагностике NPE. Это говорит нам о многом:

Это говорит нам о многом:

  • «в Test.main» говорит, что мы были в методе класса .
  • «Test.java:4» дает исходное имя файла класса, и он сообщает нам, что оператор, где это произошло, находится в строке 4 файла.

Если вы подсчитаете строки в файле выше, строка 4 — это та, которую я обозначил комментарием «ЗДЕСЬ».

Обратите внимание, что в более сложном примере в трассе стека NPE будет много строк. Но вы можете быть уверены, что вторая строка (первая строка «в строке» ) сообщит вам, куда был сброшен NPE 1

Короче говоря, трассировка стека однозначно скажет нам, какая инструкция программы выбрала NPE.

1 — Не совсем верно. Есть вещи, называемые вложенными исключениями…

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector