У меня есть следующие:Поймать же исключение дважды
public void method(){
try {
methodThrowingIllegalArgumentException();
return;
} catch (IllegalArgumentException e) {
anotherMethodThrowingIllegalArgumentException();
return;
} catch (IllegalArgumentException eee){ //1
//do some
return;
} catch (SomeAnotherException ee) {
return;
}
}
Java не позволяет нам поймать исключение дважды, поэтому мы получили ошибку компиляции Иней на //1
. Но мне нужно сделать именно то, что я пытаюсь сделать:
попробовать метод methodThrowingIllegalArgumentException()
первым, и если он терпит неудачу с IAE
, попробуйте anotherMethodThrowingIllegalArgumentException();
, если он терпит неудачу с IAE
тоже сделать некоторые и вернуться. Если он не сработает с SomeAnotherException
, просто вернитесь.
Как это сделать?
Действительно, thatnk вас. –
@ St.Antario Это кажется кодовым запахом для меня - хотя это правильный ответ. Если вам нужно писать код таким образом, вы, вероятно, можете реорганизовать его, чтобы быть чище. Насколько я знаю, высказывания catch не должны делать ничего, что могло бы вызвать исключительную ситуацию. – crush
@crush __ Насколько я знаю, я думаю, что это неправда, потому что вы хотите бросить что-то более информативное, чем, скажем, IndexOutOfBoundException. –