В целом суть задачи ясна, за исключением одного момента:
В момент срабатывания:
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()стоявшего предыдущим в цепочке вызовов и т.д.