В целом суть задачи ясна, за исключением одного момента:
В момент срабатывания:
else if (answer.toLowerCase().equals("ок")) {
System.out.println("Так-то лучше :) Список твоих отговорок:");
throw new SecurityException();
я так понимаю подтягиваются все исключения накопившиеся в:
try {
buyElephant(answer, scanner);
} catch (Exception e) {
System.out.println(answer);
throw e;
Не понимаю эту взаимосвязь. Не понимаю как throw new SecurityException(); может ссылаться на Exception e здесь. Помогите разобраться, пожалуйста. Может я неправильно понял логику. Спасибо
George
33 уровень
Взаимосвязь SecurityException() и Exception e
Решен
main()
вызывает методbuyElephant()
с аргументомnull
. Вызванный с этим аргументом метод печатает строку "Купи слона". Затем считывает ответ. При любом ответе методbuyElephant()
рекурсивно вызывает сам себя в блокеtry
, в качестве аргумента передав полученный ответ. Если аргументом метода является строка "ок", то выбрасывается исключениеSecurityException
после чего метод аварийно завершается. ПосколькуSecurityException
является классом-потомком исключенияException
, то выброшенное исключение перехватывается блокомcatch (Exception e)
. В ходе работы блока печатается ответ, который был передан в рекурсивный вызов, после чего перехваченное исключение снова выбрасывается (аварийно завершая метод), чтобы быть перехваченным блокомcatch
методаbuyElephant()
стоявшего предыдущим в цепочке вызовов и т.д.