2017-02-21 2 views
2

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 hier unit -> 'a Typ hat

+0

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_". –

+0

Wenn ich es richtig verstehe, gibt Reraise "T" zurück, was "int" wird, um dem "try" -Ausdruck zu entsprechen. –

+0

Genau ......... –

Antwort

7

"reraise" ist eine Funktion. Sie müssen Einheit zu ihm übergeben.

+3

Oh, dumm mich. :-) –

Verwandte Themen