Widziałem wielokrotnie fragmenty kodu scala za pomocą Opcji (dla prostych wartości) lub [Lista [Błąd], T] do obsługi błędów.Czy stosowanie wyjątków to zła praktyka w scala?
daje to miejsce na kod jak poniżej
def createApplicationToken(accessToken: AccessToken): Either[List[Error], ApplicationToken] = {
// go to social info provider and fetch information
retrieveProviderInfo(accessToken).fold(
errors => Left(errors),
info => {
// try to find user using the info from the provider
// if it's not there, create user
User.findOrCreateFromProviderInfo(info).fold(
errors => Left(errors),
user => {
// try to create a fresh token and save it to the user
user.refreshApplicationToken.fold(
errors => Left(errors),
user => Right(user.token)
)
}
)
}
)
który wytwarza kod nie tak piękny zagnieżdżania, zmusza do czynienia z awariami na każdym kroku, a także zmusza do mieć wszystkie funkcje zwracają Albo [ ...]
Więc chciałbym wiedzieć, czy
stosowanie wyjątków jest zalecane w Scala (lub programowania funkcyjnego w ogóle)
są jakieś niedogodności w korzystaniu z nich (dotyczące niezmienności lub kodu współbieżności)
wyjątki są w jakiś sposób w sprzeczności z zasadami lub programowania funkcyjnego
można myśleć o lepszym sposobem Kodeksu podany przykład
-
Można by uniknąć zagnieżdżania zamykając FUNCT jon natychmiast po wykryciu błędu za pomocą instrukcji return, ale użycie zwrotu również jest odradzane w scala ...
pokrewne http://stackoverflow.com/questions/12886285/throwing-exceptions-in-scala-what-is-the-official-rule –
dzięki za link ... – opensas
Flatmap that shit –