Печать исключений stackTrace и отладка в java
stackTrace (call trace по-французски) — это представление стека во время выполнения в java программы. Исключения часто встречаются в наших программах, когда программисты компилируют свои программы. Трассировка вызова позволила нам отследить источник ошибки.public static void main(String[] args) {
press(null);//строка 9
}
static void press(int[] a) {
System.out.println("button "+a[0]);//строка 12
}
Исключение в потоке "main" java.lang.NullPointerException
в myClass.press(StringCompare.java:12)
в myClass.main(StringCompare.java:9)
Этот пример прост, вы можете сказать, где произошла ошибка, щелкнув по последнему вызванному методу. Ошибка находится в строке 12 и указывает на доступ к нулевому объекту (NullPointerException). Единственным присутствующим объектом является a[0], поэтому он равен null, и мы замечаем, что метод press вызывается в основном с нулевым параметром.
Пример try/catch
Метод java.lang.Throwable.printStackTrace() Выводит всю последовательность от начала до появления исключения в виде строк в порядке убывания стека. Последняя строка представляет корень, который является первым методом с накоплением, а последняя представляет вершину стека, в которой находится ошибка. Линии красные, потому что дисплей сделан с ними. System.err.
Исключение в потоке "main" java.lang.IllegalArgumentException: input == null!Это исключение выдано выполнив программу:
at javax.imageio.ImageIO.read(Unknown Source)
at Fenetre.(Fenetre.java:127)
at Test.main(Test.java:9)
Откроется класс Fenetre.java, и мы сможем найти причину в строке 127, которая указывает на то, что входной поток равен null. Это означает, что изображение не было найдено, но почему оно вызвало исключение?
Исключение в потоке "main" java.lang.IllegalArgumentException: input == null!Ищем тип исключения в catch и замечаем, что это IOExeption, потому что метод getResource должен императивно обращаться к ресурсу, который находится в файле/icone.png иначе в нашем случае изображение не недоступен, то выдается исключение и программа останавливается.
References
Что такое трассировка стека и как ее использовать для отладки ошибок приложения?
Class Throwable
Как напечатать трассировку стека для отладки исключений Java