5. Filtrování výjimek

Výjimky se také dají filtrovat, abychom zajistili, že obsluha výjimky proběhne tehdy, pokud jsou splněny další podmínky. Takové podmínky booleanovského typu lze definovat za klíčovým slovem when. Obecná syntaxe uvedené podmínky může vypadat následovně:

bool obsluhaVyjimky = …;
try
{
	nebezpečnýKód
}
catch(typ identifikátorVýjimky) when(obsluhaVyjimky == true)
{
	těloHandleru 
}

kde:

  • obsluhaVyjimky - booleanovská proměnná, která určuje zda má být provedeno ošetření výjimky, tj., proměnná nabývá hodnoty true. Pokud je hodnota proměnné false, kód v těle handleru, který má být proveden v případě, že je vyvolána výjimka, není proveden a použije se výchozí mechanismus zpracování výjimek pro aplikaci

Pokud více metod používá stejné ošetření výjimek, je vhodné volání metod umístit do těla příkazu try a za toto tělo umístit příkaz catch s ošetřením dané výjimky pro volané metody, aby se kód pro ošetření stejné výjimky neduplikoval.