Ответ 1
Наследовать от System.Exception
. System.ApplicationException
бесполезен, и в директивах по дизайну указано " Не бросить или получить от System.ApplicationException
".
См. http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx
В ответ на предыдущий вопрос относительно исключений, каковы наилучшие методы создания настраиваемого исключения в .NET?
В частности, следует ли вам наследовать из System.Exception, System.ApplicationException или какого-либо другого базового исключения?
Наследовать от System.Exception
. System.ApplicationException
бесполезен, и в директивах по дизайну указано " Не бросить или получить от System.ApplicationException
".
См. http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx
В С# IDE введите "exception" и нажмите "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")
{
}
}
Я предпочитаю третий вариант, потому что я рассматриваю его как решение OO.
Для этого есть фрагмент кода. Используйте это. Кроме того, проверьте анализ кода после этого; в этом фрагменте отсутствует один из конструкторов, который вы должны реализовать.
Я думаю, что самое важное, что нужно помнить при рассмотрении исключений на любом уровне (создание пользовательских, метательных, ловушек), заключается в том, что исключения относятся только к исключительным условиям.
Базовое исключение, из которого наследуются все остальные исключения, это System.Exception, и это то, что вы должны наследовать, если, конечно, вы не используете такие вещи, как, скажем, сообщения по умолчанию более конкретного исключения.