Ich habe eine einfache benutzerdefinierte Ausnahme wie folgt definiert, aber ich mag nicht die Throw-Funktion verwenden und ich wirklich nicht gerne beide Throw und eine Throw2 Funktionen haben. Gibt es einen eleganteren Weg dies zu tun? Gibt es eine Möglichkeit, MyError oder Error direkt ohne die Zwischenfunktion zu werfen?F #: Benutzerdefinierte Ausnahmen. Gibt es eine bessere Möglichkeit, den Ausnahmetyp zu überlasten?
#light
module Utilities.MyException
type MyError(code : int, msg : string) =
member e.Msg = msg
member e.Code = code
new (msg : string) = MyError(0, msg)
exception Error of MyError
let public Throw (msg : string) =
let err = new MyError(msg)
raise (Error err)
let public Throw2 (code : int) (msg : string) =
let err = new MyError(code, msg)
raise (Error err)
Ich verwende es wie folgt aus, aber ich möchte eine der Varianten verwenden, die nicht
Throw(System.String.Format("Could not parse boolean value '{0}'", key))
//The string isn't of the correct type for Error
//raise(Error(System.String.Format("Could not parse boolean value '{0}'", key)))
//MyError isn't compatible with System.Exception
//raise(MyError(System.String.Format("Could not parse boolean value '{0}'", key)))
Ich wusste, dass es so einfach sein musste. Vielen Dank! – telesphore4