Итак, я изучаю функциональный Scala, и в книге говорится, что исключение разбивает ссылочную прозрачность, и поэтому Option
следует использовать вместо этого:
def pattern(s: String): Option[Pattern] = {
try {
Some(Pattern.compile(s))
} catch {
case e: PatternSyntaxException => None
}
}
Это выглядит довольно плохо; Я имею в виду, что это похоже на:
catch(Exception e){
return null;
}
Сохранить для того, чтобы мы могли отличить "null для ошибки" от "null как подлинное значение". Кажется, он должен хотя бы вернуть что-то, что содержит информацию об ошибке, например:
catch {
case e: Exception => Fail(e)
}
Что мне не хватает?