Wie kann ich dem F # -Compiler helfen, eine Ausnahme neu zu werfen, wenn kein Rückgabewert vorliegt?Erzähle F #, dass Reraise keinen Wert zurückgibt
Betrachten wir zum Beispiel eine Operation Einwickeln der Ausnahme zu protokollieren:
let doDivision() =
try
2/0
with ex ->
log ex
reraise
Der Compiler meldet diesen Fehler für reraise
:
Dieser Ausdruck wurde erwartet Typ
int
zu haben, aber hierunit -> 'a
Typ hat
Es kann nicht "kein Rückgabewert" haben, weil dann die 'try' und' with' Zweige unterschiedliche Typen hätten. Es muss denselben Rückgabetyp haben wie der Zweig "try", nämlich "int". Dies sagt der Compiler zu "_dieser Ausdruck hatte den Typ int_". –
Wenn ich es richtig verstehe, gibt Reraise "T" zurück, was "int" wird, um dem "try" -Ausdruck zu entsprechen. –
Genau ......... –