#scala
#scala
Вопрос:
Я хочу определить выбрасываемый объект для возврата в случае сбоя функции. Мне не нужна трассировка стека или параметры исключения или наследование. Могу ли я тогда просто определить объект, который можно использовать?
object BadParam extends NoStackTrace
def f(s: String): Try[Int] = Try(s.toInt).recoverWith(_ => Failure(BadParam))
Это плохо по какой-либо причине?
Комментарии:
1. Да, но он должен быть вызываемым, поэтому
object BadParam extends Throwable("BadParan") with NoStackTrace
2. NoStackTrace расширяет
Throwable
3. О, подождите, код работает. Не уверен, в чем ваш вопрос, это очень распространенная практика.
4. Хорошо, это то, что я хотел знать. Потому что я никогда не видел этого в своей практике. Доступны только классы, расширяющие throwable. Спасибо!