Ответ 1
В вашем списке все еще отсутствует.
Эта ссылка является хорошим дополнением к вашему списку:
Недавно я начал новый проект на С#, и, поскольку я кодировал какое-то исключение в функции, я понял, что не знаю, какое исключение я должен использовать.
Вот общие исключения, которые часто возникают во многих программах:
Существуют ли какие-либо фреймворки, которые вы часто используете в своих программах? Какие исключения должен знать каждый программист .net? Когда вы используете собственное исключение?
РЕДАКТИРОВАТЬ:. Чтобы прояснить тему, исходный вопрос был больше о том, "какое исключение я могу бросить?" чем "какие исключения я должен уловить?".
В вашем списке все еще отсутствует.
Эта ссылка является хорошим дополнением к вашему списку:
Я использую настраиваемое исключение, когда мне приходится поднимать исключение с некоторой логикой, специфичной для логики приложения, а не для фреймворка.
Это означает, что если мой бизнес-уровень получает значение, которое не подходит для выполняемой части выполняемой функции, я создаю собственное исключение. Если пользователь пытается что-то сделать с записью базы данных, которую запрещают мои бизнес-правила, то это также хороший кандидат для настраиваемого исключения.
В основном вы создаете пользовательские исключения, чтобы отличать ваши приложения или бизнес-исключения от регулярных системных исключений. Ваши пользовательские исключения должны по-прежнему вытекать из System.Exception
. Преимущество, которое вы получаете от их использования, заключается в том, что вы можете создавать код, который их улавливает и предпринимать определенные действия - вы не можете выполнять конкретные действия, когда у вас есть случайный System.Exception
из-за ошибочной логики или ошибок.
IndexOutOfRangeException
Брошенный при попытке индексирования массив через индекс, который меньше ноль или вне границ массив. -MSDN
Я уверен, что вы должны знать о каждом встроенном классе исключений. Вы должны знать, какие исключения вы можете бросить, а какие нет. Вы должны понимать, как инфраструктура .net рассматривает встроенное исключение. Вы должны знать, когда вам лучше наследовать существующий класс и определить свой собственный тип. Существует много предопределенных исключений и почти всегда вы можете найти подходящий.
Я бы посоветовал вам прочитать об этом в книге Джеффри Рихтера.
int SafeDivision(int x, int y)
{
try
{
return (x / y);
}
catch (System.DivideByZeroException dbz)
{
System.Console.WriteLine("Division by zero attempted!");
return 0;
}
}
OutOfMemoryException
Вам нужно знать, почему возникает такое исключение и почему вы не должны пытаться его обрабатывать.
ThreadAbortException, из-за странного способа он воскресает себя после каждого блока catch