У меня есть пользовательское исключение, расширяющее Exception
, однако оно, похоже, не перехватывает ArrayIndexOutOfBoundsException
. Но если я вместо этого изменю предложение catch на Exception
, оно будет работать как положено.
Разве исключение суперкласса не должно перехватывать исключение подкласса, даже если оно RuntimeException
?
Вот причина исключения:
int timeInMillis = 0;
for (int i = 0; i < commandMessage.length; i++)
for (String commandValue : command.getArguments()) {
try {
if (commandValue.equals(commandMessage[i]))
// This is causing it.
timeInMillis =
Integer.parseInt(commandMessage[i + 1]);
else
throw new CommandSyntaxException(Problems.
SYNTAX_ERROR.getProblemDescription());
} catch (CommandSyntaxException commandSyntaxException) {
System.out.println("foo");
}
}
Problems
и commandValue
являются перечислениями.
И вот мой класс исключений:
public class CommandSyntaxException extends Exception {
private String message;
public CommandSyntaxException(String message) {
this.message = message;
}
@Override
public String getMessage() {
return message;
}
}
Есть ли обходной путь (кроме перехвата Exception
)? Мое намерение состоит в том, чтобы перехватить все исключения с моим собственным исключением в одном предложении catch.