Я занимаюсь небольшим хобби-проектом на C #, языке, которого я плохо знаю, и наткнулся на следующее:
Предположим, у вас есть асинхронная операция, реализованная с помощью BackgroundWorker.Теперь, если есть исключение, событие RunWorkerCompleted будет вызвано, и RunWorkerCompletedEventArgs.Error будет не нулевым.
Является ли следующий канонический способ обработки различных типов исключений?(Здесь все виды исключений - наследование WRT братьев и сестер)
if (e.Error != null)
{
FirstKindOfException e1 = e as OneKindOfException;
SecondKindOfException e2 = e as SecondKindOfException;
...
LastKindOfException en = e as LastKindOfException;
if (e1 != null)
{
...
}
else if (e2 != null)
{
...
}
...
else
{
...
}
}
Работает, но ... не чувствует правильно .