Предположим, что у меня есть класс с именем BugException, который продолжается от RuntimeException
И у BugException есть конструктор копирования, который принимает Throwable.Throwable and Exception in Java
Этот код компилируется и typechecks:
Throwable e = ...;
if (e instanceof BugException) {
throw new BugException(e);
}
Почему это, что:
Throwable e = ...;
if (e instanceof BugException) {
throw e;
}
не компилируется и выдает сообщение об ошибке: необработанное исключение. java.lang.Throwable. ?
Почему эта ненужная упаковка необходима для того, чтобы удовлетворить требованиям typechecker?
Тестирование 'instanceof' не изменяет статический тип' e'. – user2357112
Или вы можете просто бросить, без обертки. – pvg