Die Konvention ist, dass Scala-Code keine Nullen verwendet (mit einer kleinen Anzahl von Ausnahmen, die sofort behoben werden sollten, wenn diese Bibliotheksfunktionen verwendet werden).
Somit ist eine Null von Scala ein Zeichen dafür, dass etwas schiefgelaufen ist (zumindest ein IllegalArgumentException
statt eines NullPointerException
einzufangen fügt keine zusätzlichen Informationen hinzu. Lass das Original einfach alleine.
Wenn der Code aus Java stammt, können Sie ihn in Option
umbrechen, wodurch null
in None
konvertiert wird. Dann müssen Sie wahrscheinlich nicht einmal eine Ausnahme auslösen; gib einfach None
zurück.
Wenn Sie nicht fortfahren können, wenn es null ist, dann müssen Sie überlegen, ob eine informative Ausnahme helfen würde. Option(p).orElse(throw new IllegalArgumentException("Null!"))
ist eine kompakte Art, die ausnahmesetzte Stimmung auszudrücken.
In Scala 2.10 können Sie auch Dinge in scala.util.Try(...)
einbinden, die automatisch die Ausnahme für Sie fangen und verpacken. Wenn Sie eine verpackte Ausnahme anstelle einer geworfenen wollen, ist dies der richtige Weg. (Und Try
anstelle von Option
verwenden.)
Verwenden Sie für eine allgemeinere Behandlung alternativer Ergebnisse Either
. Die Konvention für die Fehlerbehandlung ist, dass die erwartete Ausgabe ein Right(whatever)
ist, während Left(whatever)
anzeigt, dass etwas schief gegangen ist.
Das Scala-Idiom ist im Wesentlichen "benutze niemals Nullwerte". Wenn Sie also keine API schreiben, die schmutzige Java-Benutzer aufnehmen soll, würde ich mir darüber keine Sorgen machen. Andernfalls werden Sie am Ende diesen Textbaustein-Check für jeden Parameter bei jeder Methode, die Sie schreiben, einfügen.
Ihre schönen One-Line-Methoden
%Vor%wird etwas Unangenehmes wie
%Vor%oder
%Vor%Wie schrecklich.
Tags und Links scala