Что выведет на консоль следующий код:
try {
System.out.print("a");
throw new IllegalArgumentException();
} catch (RuntimeException e) {
System.out.print("b");
} finally {
System.out.print("c");
}
а. ab
б. ac
в. abc
в. abc
"a" будет выведено в любом случае. Затем будет выброшено исключение IllegalArgumentException.
Это исключение будет поймано catch'ем, так как оно наследует RuntimeException.
Затем будет выполнен блок finally и на консоль будет выведено "c".
Таким образом отработают все инструкции вывода на консоль и итоговый вывод будет "abc".
Какое из утверждений правильное?
а. Проверяемые (checked) исключения обычно выбрасываются программистами вручную.
б. Проверяемые (checked) исключения обычно выбрасываются JVM.
в. Проверяемые (checked) исключения обычно выбрасываются и программистами, и JVM.
а. Проверяемые (checked) исключения обычно выбрасываются программистами вручную.
Программируя на Java мы часто пользуемся библиотечными методами, а также вызываем методы классов различных посторонних пакетов, которые мы подключаем к своему проекту.
То и дело вызов того или иного библиотечного (или просто постороннего) метода требует от нас заключить этот вызов в try-catch или пробросить потенциальное проверяемое исключение дальше.
Поэтому может сложиться впечатление, что JVM постоянно пытается выбрасывать проверяемые исключения, но это не так. Внутри этих библиотек находится код, написанный программистами вручную и все проверяемые исключения, которые летят из таких методов выброшены программистами вручную.
Какое из утверждений правильное?
а. Непроверяемые (unchecked) исключения обычно выбрасываются программистами вручную.
б. Непроверяемые (unchecked) исключения обычно выбрасываются JVM.
в. Непроверяемые (unchecked) исключения обычно выбрасываются и программистами, и JVM.
в. Непроверяемые (unchecked) исключения обычно выбрасываются и программистами, и JVM.
Столкнувшись с необходимостью поделить на ноль, например, виртуальная машина выбросит соответствующее непроверяемое RuntimeException (java.lang.ArithmeticException: / by zero). Поэтому выбрасывать непроверяемые исключения - обычное дело для JVM.
Тем не менее, это не означает, что все собственные исключения, которые создают программисты являются проверяемыми. Нет. В некоторых ситуациях вполне уместны собственные исключения, унаследованные от RuntimeException и являющиеся непроверяемыми.
Среди стандартных непроверяемых исключений можно выделить java.lang.IllegalArgumentException, которое программисты часто выбрасывают вручную, если в разрабатываемый ими метод могут быть переданы "неправильные" аргументы.
Какое из утверждений правильное?
а. Ошибки (error) обычно выбрасываются программистами вручную.
б. Ошибки (error) обычно выбрасываются JVM.
в. Ошибки (error) обычно выбрасываются и программистами, и JVM.
б. Ошибки (error) обычно выбрасываются JVM.
Хотя в коде можно написать инструкцию, которая бы выбросила именно ошибку (то есть наследника java.lang.Error), такой подход считается неправильным и не практикуется.
Только JVM выбрасывает ошибки.