Изменить.Вы написали
Как правило, исключение никогда не должно создаваться
Это идеальный вариант использования для RuntimeException
.Это в основном прозрачное исключение.Пользователи вашего кода не увидят его, но он будет выглядеть как дикий покемон, когда произойдет что-то необычное, и остановит ваше приложение, давая вам возможность исправить это.
Ваш стандартный кодпоток не будет затронут, и вы не будете возвращать значение null
.
Лямбда выражениям не разрешено выбрасывать отмеченные Exception
с.
CloneNotSupportedException
extends Exception
.
Теперь у вас есть два варианта
- Обрабатывать
Exception
на месте, как вы это сделали - Распространите
Exception
, завернув его в RuntimeException
return () -> {
try {
method2(parameter1, parameter2...);
} catch (final CloneNotSupportedException e) {
throw YourCustomRuntimeException("Error while cloning", e /* Original cause */);
}
};
Это зависит от варианта использования, но я думаю,CloneNotSupportedException
сигнализирует об ошибке , которая должна быть очевидна для вас, разработчик.Так что пусть это всплывет.
Пользовательский Exception
просто нужно расширить RuntimeException
и, возможно, предоставить дополнительные поля для хранения соответствующих данных.
YourCustomRuntimeException extends RuntimeException { ... }
Не бросить базу RuntimeException
, использовать пользовательские.