Verwenden benutzergefilterter AusnahmehandlerUsing User-Filtered Exception Handlers

Visual Basic unterstützt benutzergefilterte Ausnahmen.Currently, Visual Basic supports user-filtered exceptions. Benutzergefilterte Handler fangen und behandeln Ausnahmen gemäß benutzerdefinierten Ausnahmeanforderungen.User-filtered exception handlers catch and handle exceptions based on requirements you define for the exception. In diesen Handlern wird die Catch-Anweisung mit dem Schlüsselwort When verwendet.These handlers use the Catch statement with the When keyword.

Dieses Verfahren ist nützlich, wenn ein bestimmtes Ausnahmeobjekt mehreren Fehlern entspricht.This technique is useful when a particular exception object corresponds to multiple errors. In diesem Fall hat das Objekt in der Regel eine Eigenschaft, die den speziellen Fehlercode enthält, der mit dem Fehler verknüpft ist.In this case, the object typically has a property that contains the specific error code associated with the error. Sie können die Eigenschaft, die den Fehlercode enthält, im Ausdruck dazu verwenden, nur den bestimmten Fehler auszuwählen, den Sie in dieser Catch-Klausel behandeln möchten.You can use the error code property in the expression to select only the particular error you want to handle in that Catch clause.

Im folgenden Visual Basic-Beispiel wird die Catch/When-Anweisung veranschaulicht.The following Visual Basic example illustrates the Catch/When statement.

Try  
    'Try statements.  
    Catch When Err = VBErr_ClassLoadException
    'Catch statements.
End Try  

Der Ausdruck der benutzergefilterten Klausel ist in keiner Weise eingeschränkt.The expression of the user-filtered clause is not restricted in any way. Tritt während der Ausführung des benutzergefilterten Ausdrucks eine Ausnahme auf, wird diese Ausnahme verworfen, und der Filterausdruck wird so bewertet, als habe er das Ergebnis „false“ gehabt.If an exception occurs during execution of the user-filtered expression, that exception is discarded and the filter expression is considered to have evaluated to false. In diesem Fall setzt die Common Language Runtime die Suche nach einem Handler für die aktuelle Ausnahme fort.In this case, the common language runtime continues the search for a handler for the current exception.

Kombinieren der speziellen Ausnahme und der benutzergefilterten KlauselnCombining the Specific Exception and the User-Filtered Clauses

Eine Catch-Anweisung kann sowohl die spezielle Ausnahme als auch die benutzergefilterten Klauseln enthalten.A catch statement can contain both the specific exception and the user-filtered clauses. Die Runtime prüft zuerst die spezielle Ausnahme.The runtime tests the specific exception first. Wird die spezielle Ausnahme erfolgreich abgefangen, führt die Runtime den Benutzerfilter aus.If the specific exception succeeds, the runtime executes the user filter. Der allgemeine Filter kann einen Verweis auf die Variable enthalten, die im Klassenfilter deklariert ist.The generic filter can contain a reference to the variable declared in the class filter. Die Reihenfolge der beiden Filterklauseln nicht umgekehrt werden.Note that the order of the two filter clauses cannot be reversed.

Im folgenden Visual Basic-Beispiel werden die spezielle Ausnahme ClassLoadException in der Catch-Anweisung sowie die benutzergefilterte Klausel mit dem Schlüsselwort When veranschaulicht.The following Visual Basic example shows the specific exception ClassLoadException in the Catch statement as well as the user-filtered clause using the When keyword.

Try  
    'Try statements.
    Catch cle As ClassLoadException When cle.IsRecoverable()  
    'Catch statements.
End Try  

Siehe auchSee also