Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
raise
-Funktion wird verwendet, um anzugeben, dass ein Fehler oder eine Ausnahmebedingung aufgetreten ist. Informationen zum Fehler werden in einem Ausnahmeobjekt erfasst.reraise
-Funktion wird verwendet, um eine behandelte Ausnahme in der Aufrufkette nach oben weiterzugeben.raise (expression)
Die raise
-Funktion generiert ein Ausnahmeobjekt und initiiert einen Stapelentladungsprozess. Der Stapelentladungsprozess wird von der Common Language Runtime (CLR) verwaltet, sodass das Verhalten dieses Prozesses mit dem Verhalten in jeder anderen .NET-Programmiersprache identisch ist. Beim Stapelentladungsprozess wird nach einem Ausnahmehandler gesucht, der der generierten Ausnahme entspricht. Die Suche beginnt im aktuellen try...with
-Ausdruck, sofern vorhanden. Die einzelnen Muster im with
-Block werden der Reihen nach überprüft. Wird ein übereinstimmenden Ausnahmehandler gefunden, gilt die Ausnahme als behandelt. Andernfalls wird der Stapel entladen, und with
-Blöcke weiter oben in der Aufrufkette werden überprüft, bis ein übereinstimmender Handler gefunden wird. In der Aufrufkette ggf. enthaltene finally
-Blöcke werden ebenfalls der Reihe nach ausgeführt, wenn der Stapel entladen wird.
Die raise
-Funktion entspricht throw
aus C# oder C++.
Die folgenden Codebeispiele veranschaulichen das Generieren einer Ausnahme mithilfe der raise
-Funktion:
exception InnerError of string
exception OuterError of string
let function1 x y =
try
try
if x = y then raise (InnerError("inner"))
else raise (OuterError("outer"))
with
| InnerError(str) -> printfn "Error1 %s" str
finally
printfn "Always print this."
let function2 x y =
try
function1 x y
with
| OuterError(str) -> printfn "Error2 %s" str
function2 100 100
function2 100 10
Die raise
-Funktion kann auch verwendet werden, um .NET-Ausnahmen auszulösen, wie im folgenden Beispiel zu sehen:
let divide x y =
if (y = 0) then raise (System.ArgumentException("Divisor cannot be zero!"))
else
x / y
Die reraise
-Funktion kann in einem with
-Block verwendet werden, um eine behandelte Ausnahme in der Aufrufkette nach oben weiterzugeben.
reraise
verwendet keinen Operanden für die Ausnahme. Die Funktion ist besonders hilfreich, wenn eine Methode ein Argument in einer aufrufenden Funktion an eine andere Bibliotheksmethode übergibt und die Bibliotheksmethode eine Ausnahme auslöst, die an den Aufrufer übergeben werden muss.
Die reraise
-Funktion darf nicht im with
-Block von try
/with
-Konstrukten in berechneten Listen, Arrays, Sequenzen oder in Berechnungsausdrücken (einschließlich task { .. }
und async { .. }
) verwendet werden.
open System
let getFirstCharacter(value: string) =
try
value[0]
with :? IndexOutOfRangeException as e ->
reraise()
let s = getFirstCharacter("")
Console.WriteLine($"The first character is {s}")
// The example displays the following output:
// System.IndexOutOfRangeException: Index was outside the bounds of the array.
// at System.String.get_Chars(Int32 index)
// at getFirstCharacter(String value)
// at <StartupCode>.main@()
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrieren