Java: бросает ли исключение свой метод?
Например:
public String showMsg(String msg) throws Exception {
if(msg == null) {
throw new Exception("Message is null");
}
//Create message anyways and return it
return "DEFAULT MESSAGE";
}
String msg = null;
try {
msg = showMsg(null);
} catch (Exception e) {
//I just want to ignore this right now.
}
System.out.println(msg); //Will this equal DEFAULT MESSAGE or null?
Мне нужно по существу игнорировать исключения в некоторых случаях (обычно, когда несколько исключений могут быть выбраны из метода, и в конкретном случае это не имеет значения), поэтому, несмотря на жалкий пример, который я использовал для простоты, showMsg все еще выполняется или действительно ли бросок возвращает метод?
Ответы
Ответ 1
Оператор return
не запускается, если генерируется исключение. Выброс исключения приводит к тому, что поток управления вашей программой немедленно переходит к обработчику исключений (*), пропуская что-либо еще на этом пути. Так что в частности msg
будет null
в вашем заявлении на печать, если исключение было выбрано showMsg
.
(*) За исключением того, что в блоках finally
будут выполняться команды, но это действительно не актуально.