Delen via


Door de gebruiker gefilterde uitzonderingshandlers gebruiken

Door de gebruiker gefilterde uitzonderingshandlers vangen uitzonderingen op en verwerken ze op basis van vereisten die u voor de uitzondering definieert. Deze handlers gebruiken de catch instructie met het when trefwoord (Catch en When in Visual Basic).

Deze techniek is handig wanneer een bepaald uitzonderingsobject overeenkomt met meerdere fouten. In dit geval heeft het object doorgaans een eigenschap die de specifieke foutcode bevat die aan de fout is gekoppeld. U kunt de eigenschap foutcode in de expressie gebruiken om alleen de specifieke fout te selecteren die u in die catch component wilt verwerken.

In het volgende voorbeeld ziet u de catch/when instructie.

try
{
    //Try statements.  
}
catch (Exception ex) when (ex.Message.Contains("404"))
{
    //Catch statements.
}
Try  
    'Try statements.  
    Catch When Err = VBErr_ClassLoadException
    'Catch statements.
End Try  

De expressie van de door de gebruiker gefilterde component wordt op geen enkele manier beperkt. Als er een uitzondering optreedt tijdens de uitvoering van de door de gebruiker gefilterde expressie, wordt die uitzondering genegeerd en wordt de filterexpressie beschouwd als onwaar. In dit geval gaat de algemene taalruntime verder met het zoeken naar een handler voor de huidige uitzondering.

De specifieke uitzondering en de door de gebruiker gefilterde componenten combineren

Een catch instructie kan zowel de specifieke uitzondering als de door de gebruiker gefilterde componenten bevatten. De runtime test eerst de specifieke uitzondering. Als de specifieke uitzondering slaagt, voert de runtime het gebruikersfilter uit. Het algemene filter kan een verwijzing naar de variabele bevatten die is gedeclareerd in het klassefilter. Houd er rekening mee dat de volgorde van de twee filtercomponenten niet kan worden omgekeerd.

In het volgende voorbeeld ziet u een specifieke uitzondering in de catch-instructie en de door de gebruiker gefilterde component met behulp van het trefwoord wanneer .

try
{
    //Try statements.  
}
catch (System.Net.Http.HttpRequestException ex) when (ex.Message.Contains("404"))
{
    //Catch statements.
}
Try  
    'Try statements.
    Catch cle As ClassLoadException When cle.IsRecoverable()  
    'Catch statements.
End Try  

Zie ook