Каковы рекомендации по созданию собственного исключения?
Вопрос
В продолжение предыдущий вопрос Что касается исключений, каковы наилучшие методы создания собственных исключений в .NET?
Более конкретно, следует ли вам наследовать от System.Exception, System.ApplicationException или другого базового исключения?
Решение
Наследовать от System.Exception
. System.ApplicationException
бесполезно, и в рекомендациях по проектированию говорится: "Не бросить или получить из System.ApplicationException
."
Видеть http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx
Другие советы
В C# IDE введите «исключение» и нажмите TAB.Это расширится, чтобы вы могли начать писать новый тип исключения.Есть комментарии со ссылками на обсуждение практики исключений.
Лично я большой поклонник создания множества небольших классов, в том числе и типов исключений.Например, при написании класса Foo я могу выбирать между:
throw new Exception("Bar happened in Foo");
throw new FooException("Bar happened");
throw new FooBarException();
где
class FooException : Exception
{
public FooException(string message) ...
}
и
class FooBarException : FooException
{
public FooBarException()
: base ("Bar happened")
{
}
}
Я предпочитаю третий вариант, потому что считаю его объектно-ориентированным решением.
Для этого есть фрагмент кода.Используйте это.Кроме того, после этого проверьте анализ кода;в фрагменте отсутствует один из конструкторов, которые вам следует реализовать.
Я думаю, что самая важная вещь, которую следует помнить при работе с исключениями на любом уровне (создание пользовательских настроек, выдача, перехват), — это то, что исключения предназначены только для исключительных условий.
Базовым исключением, от которого наследуются все остальные исключения, является System.Exception, и это то, что вы должны наследовать, если, конечно, вы не используете такие вещи, как, скажем, сообщения по умолчанию о более конкретном исключении.