Найти тему

Что такое Stack Trace?

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

public class TestStockQuote {
public static void main(String[] args) {
StockQuote quote = new StockQuote();
System.out.println(quote.getHigh() / quote.getLow());
}
}

При попытке запустить этот код получу следующее:

Exception in thread "main" java.lang.NullPointerException:
Cannot invoke "java.lang.Float.floatValue()" because the return value of "StockQuote.getHigh()" is null
at TestStockQuote.main(TestStockQuote.java:4)

Это и есть простейший Stack Trace, указывающий на то, что на 4й строчке кода я поймал NPE. Stack Trace используется для отладки кода потому что в моменте отображает полную картину вызова с точным указанием места возникновения ошибки. Но обычного пользователя такие сообщения шикируют, поэтому лучше заворачивать потенциально небезопасный код в try – catch, а сообщения об ошибках перенаправлять в лог.