Определение объекта исключения вместо класса

#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. Спасибо!