Если вы посмотрите на трассировку стека, вы можете узнать, в какой строке произошла ошибка.
При использовании переопределенного метода вы получаете точное имя класса, исходный файл и номер строки, вам просто нужно знать, как его прочитать.
С этой страницы:
java.lang.NullPointerException
at MyClass.mash(MyClass.java:9) //<--- HERE!!!!
at MyClass.crunch(MyClass.java:6)
at MyClass.main(MyClass.java:3)
Это говорит о том, что проблема возникла в line 9
файла MyClass.java
в методе mash
, который в свою очередь был вызван методом crunch
при l ine 6
того жефайл, который был вызван main
в line 3
того же файла.
Вот исходный код:
class MyClass {
public static void main(String[] args) {
crunch(null); // line 3
}
static void crunch(int[] a) {
mash(a); // line 6
}
static void mash(int[] b) {
System.out.println(b[0]);//line 9, method mash.
}
}
По сути, вам просто нужно ... хорошо прочитать его!
Сложные трассировки в первый раз немного сложны для понимания, но позже они становятся очень мощным инструментом.
Надеюсь, это поможет.