На языке Java нет пути.
Лучший способ справиться с этим - с комментарием и повторным броском.
Например, если вы используете метод write
, который принимает Appendable
, но передает StringBuilder
, то, возможно, вы захотите скрыть тот факт, что Appendable.append
выдает IOException
, поскольку StringBuilder
никогда на самом деле делает это.
try {
write(myStringBuilder);
} catch (IOException ex) {
// Should never happen since StringBuilders do
// not throw IOexceptions on append.
throw new AssertionError(ex);
}
Обратите внимание, что если вы ошибаетесь (сейчас или в будущем) относительно способности функции делегата генерировать, а затем, перебрасывая в AssertionError
, вы даете сопровождающим кода больше информации о том, что пошло не так.
Если в вашем проекте последовательно используется система ведения журнала, тогда регистрация может быть хорошим вариантом, если запись и удаление исключения не нарушат никаких инвариантов.