В С# 6.0 было введено ключевое слово "когда", теперь вы можете фильтровать исключение в блоке catch. Но разве это не так, как оператор if внутри блока catch? если да, то разве это не просто синтаксический сахар или я что-то не хватает?
Например, блок catch try с ключевым словом "когда":
try { … }
catch (WebException ex) when ex.Status == WebExceptionStatus.Timeout {
//do something
}
catch (WebException ex) when ex.Status== WebExceptionStatus.SendFailure {
//do something
}
catch (Exception caught) {…}
или
try { … }
catch (WebException ex) {
if(ex.Status == WebExceptionStatus.Timeout) {
//do something
}
}
catch (WebException ex) {
if(ex.Status == WebExceptionStatus.SendFailure) {
//do something
}
}
catch (Exception caught) {…}