Я пишу приложение на C#, которое требует от меня создать объект «Array
» на лету из некоторых измерений, в которые пользователь переходит. Метод Array.CreateInstance()
может сбрасывать (по последнему счету) 6 разных исключений, которые я хотел бы обрабатывать. Для каждого исключения я хотел бы проинформировать пользователя простым MessageBox.Show()
и сообщением с учетом исключительных обстоятельств. То, что я не хочу делать, это уловить общий тип Exception
, потому что это не самая лучшая практика. Я бы попытался поймать ArgumentException
или что-то более конкретное, но единственным распространенным суперклассом для всех исключений является Exception
.Эффективные методы обработки исключений
Основание: Я пытаюсь найти лучший способ справиться с множеством различных исключений и что будет эффективным и, что более важно, ремонтопригодным решением.
try
{
data = Array.CreateInstance(TypeHelper.StringToType(cbDataType.SelectedItem.ToString()), dimensions);
}
catch (OutOfMemoryException) { }
catch (NullReferenceException) { }
catch (NotSupportedException) { }
catch (ArgumentNullException) { }
catch (ArgumentOutOfRangeException) { }
catch (ArgumentException) { }
+1 исключение аргумента - исключения использования и никогда не должны быть пойманы; использование должно быть гарантировано вызывающим абонентом. Если вы используете контракты с кодом для объявления и принудительного использования ограничений использования, он по умолчанию будет вызывать неуправляемое исключение ContractException, что является еще одной причиной не улавливать исключения использования, поскольку шаблон не будет работать во всех случаях. –