Felhasználó által szűrt kivételkezelők használata
A felhasználó által szűrt kivételkezelők a kivételhez megadott követelmények alapján észlelik és kezelik a kivételeket. Ezek a kezelők a catch
kulcsszóval (Catch
és When
a Visual Basicben) együtt használják az when
utasítást.
Ez a technika akkor hasznos, ha egy adott kivételobjektum több hibának felel meg. Ebben az esetben az objektum általában rendelkezik egy tulajdonsággal, amely a hibához társított konkrét hibakódot tartalmazza. A kifejezés hibakód tulajdonságával csak a záradékban catch
kezelni kívánt hibát választhatja ki.
Az alábbi példa az utasítást szemlélteti catch
/when
.
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
A felhasználó által szűrt záradék kifejezése semmilyen módon nem korlátozott. Ha a felhasználó által szűrt kifejezés végrehajtása során kivétel történik, a rendszer elveti a kivételt, és a szűrőkifejezés hamisnak minősül. Ebben az esetben a közös nyelvi futtatókörnyezet folytatja az aktuális kivétel kezelőjének keresését.
Az adott kivétel és a felhasználó által szűrt záradékok egyesítése
Az catch
utasítás az adott kivételt és a felhasználó által szűrt záradékokat is tartalmazhat. A futtatókörnyezet először teszteli az adott kivételt. Ha az adott kivétel sikeres, a futtatókörnyezet végrehajtja a felhasználói szűrőt. Az általános szűrő tartalmazhat az osztályszűrőben deklarált változóra mutató hivatkozást. Vegye figyelembe, hogy a két szűrő záradék sorrendje nem vonható vissza.
Az alábbi példa egy adott kivételt mutat be a fogási utasításban, valamint a felhasználó által szűrt záradékot a when kulcsszó használatával.
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