2009-10-10 5 views
25

Im Gegensatz zu Java, Scala können Sie ein nackter "versuchen" zu tun, ohne entweder einen Haken oder finally:Was bedeutet Scalas "Versuch" ohne einen Haken oder einen Block?

scala> try { println("Foo") } 
Foo 

Enthält diese über irgendeine Bedeutung haben tatsächlich

{ println("Foo") } 

?

+1

Ab Scala 2.11 erhalten wir eine Warnung. 'warning: Ein Versuch ohne einen Haken oder schlussendlich ist gleichbedeutend damit, seinen Körper in einen Block zu setzen; keine Ausnahmen werden behandelt. – Jus12

Antwort

25

Die Ausnahmebehandlung von Scala funktioniert, indem alle Ausnahmen an eine anonyme Catch-Funktion übergeben werden. Die catch-Funktion arbeitet mit einem Muster, das der abgefangenen Ausnahme entspricht. Wenn sie nicht übereinstimmt, wird die Ausnahme übergeben.

Die Catch-Funktion ist optional, wenn sie weggelassen wird, wird die Ausnahme direkt übergeben. So im Wesentlichen

try { exceptionThrowingFunction() } 

ist die gleiche wie

exceptionThrowingFunction() 

Siehe Kapitel 6.22 des language spec pdf für weitere Informationen.

1

Ich glaube nicht. Ich denke, Scala erlaubt einen Versuch ohne einen Haken oder schließlich, weil es keinen Grund gibt, es zu verbieten.

+5

Nun, vorausgesetzt, dass es nie einen wirklichen Grund gibt, einen bloßen "Versuch" zu verwenden, wäre ein Grund, es zu verbieten, Fehler des Programmierers zu fangen und mögliche Verwirrung zu reduzieren. Aber auf jeden Fall ist es keine große Sache. –

Verwandte Themen