Ich habe die folgende Dummy Scala Code in der Datei test.scala
:fangen alle Ausnahmen in Scala 2.8 RC1
class Transaction {
def begin() {}
def commit() {}
def rollback() {}
}
object Test extends Application {
def doSomething() {}
val t = new Transaction()
t.begin()
try {
doSomething()
t.commit()
} catch {
case _ => t.rollback()
}
}
Wenn ich kompilieren dies auf Scala 2.8 RC1 mit scalac -Xstrict-warnings test.scala
Ich werde die folgende Warnung erhalten:
test.scala:16: warning: catch clause swallows everything: not advised.
case _ => t.rollback()
^
one warning found
Also, wenn Catch-All-Ausdrücke nicht empfohlen werden, wie soll ich stattdessen ein solches Muster implementieren? Und warum werden solche Ausdrücke ohnehin nicht empfohlen?
OK. Dieser funktioniert für Transaktionen. Aber was, wenn ich eine durch eine Methode geworfene Ausnahme vollständig ignorieren möchte, nur weil es zu diesem Zeitpunkt keine Rolle spielt. –
Sie können 'case _: Exception =>}'. 'Error' ist' Throwable', aber keine 'Exception' - normalerweise besser, um durchzugehen. Wenn du wirklich meinst: "Es ist mir egal, wenn ich versuche und versäume, das zu fangen, dann will ich wenigstens mein Bestes geben", dann kannst du mit der (strikten) Warnmeldung leben. Deshalb ist es eine Warnung, kein Fehler. –
Ja, das funktioniert. Vielen Dank! Du hast recht, dass das Abfangen von "Error" nicht wirklich das ist, was ich will :-) –