Короче говоря, да.
Создание и перехват исключений нарушает нормальный поток выполнения, поэтому любая функция, которая выдает исключение, не может быть прозрачной по ссылкам.Возвращая экземпляр класса исключения, заключенный в экземпляр объявленного возвращаемого типа, вы сохраняете состояние ошибки и делаете вызов также прозрачным по ссылкам.Кроме того, вы позволяете звонящему определить, что должно произойти впоследствии.
В зависимости от ваших требований и, как вы, возможно, уже знаете, scala.util.Try
- это еще одна альтернатива scala.util.Either
.См. этот ответ на вопрос «В чем разница между Try and Either?» для получения дополнительной информации о различиях между ними.Если вам все равно, какое исключение возникает, scala.Option
- это еще одна возможность.