Почему именно через BEAN.log() я так обращаюсь к статическому контенту через созданный объект? И как работает "пробрасывание"? в лекции я так понял, что переменная с ссылкой на объект просто идет наверх, к методу который инциировал эту переменную и там уже обрабатывается если содержит исключение.Дмитрий
13 уровень
Встал вопрос!
Решен
Почему именно через BEAN.log() я так обращаюсь к статическому контенту через созданный объект? И как работает "пробрасывание"? в лекции я так понял, что переменная с ссылкой на объект просто идет наверх, к методу который инциировал эту переменную и там уже обрабатывается если содержит исключение.Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел Безумный учёный Expert
21 марта 2020, 10:26полезный
В переменной BEAN хранится ссылка на объект типа StatelessBean. Этот объект специально создаётся для генерации исключений. Если для этого объекта вызвать метод methodThrowExceptions( ), то случайным образом будет выброшено одно из исключений: CharConversionException, FileSystemException или IOException. Также для объекта BEAN можно вызвать метод log( ), который выводит в консоль информацию о возникшем исключении.
Пробрасывание исключений работает следующим образом. К примеру, имеется такой код:
+1
Павел Безумный учёный Expert
21 марта 2020, 10:26полезный
Метод main( ) вызывает метод handleExceptions( ), бросающий различные исключения. Если возникнет CharConversionException или IOException, оно будет обработано внутри самого метода handleExceptions( ) и "наверх", т. е. в main( ) не пойдёт. В результате в консоль просто будет выведено сообщение при помощи метода log( ). Но когда возникнет исключение FileSystemException, оно сначала также будет "поймано", после чего в соответствующем блоке catch выводится сообщение, а "пойманное" исключение бросается повторно:
В этом случае метод handleExceptions( ) уже не может самостоятельно обработать исключение, поскольку оно было выброшено вне блока try, и передаёт его "наверх", в точку вызова (т.е. в main( )). Поскольку FileSystemException - обрабатываемое исключение, то к сигнатуре метода необходимо добавить throws FileSystemException. Благодаря этому main( ) поймёт, что handleExceptions( ) может бросить FileSystemException, и обязывает пользователя обрабатывать это исключение внутри main( ).
+5