2015-01-19 4 views
0

В статье «Best Practices для исключения» (http://msdn.microsoft.com/en-us/library/seyhszts(v=vs.110).aspx) я нашел следующий пункт:Собственные конструкторы класса исключения

В C# и C++, использование по крайней мере, три общих Конструкторов, когда создания собственных классов исключений: конструктор по умолчанию, конструктор , который принимает строковое сообщение, и конструктор, который принимает строковое сообщение и внутреннее исключение.

Почему я должен определить эти три общих конструктора? Мой класс исключения бесполезен без дополнительных пользовательских свойств, и я должен передать их значения в качестве параметров в моем конструкторе класса исключений.

+6

Это лучшая практика - никто не говорит вам, что вы _must_ делаете это. – TGlatzer

+1

Если ваше исключение нуждается в другой информации, тогда это нормально. Лучшая практика - вот что; передовые методы, а не требования. Если вы знаете, что вам нужно сделать что-то другое, тогда сделайте что-то другое. – Servy

+0

Что делать, если кто-то хочет выбросить ваше исключение с помощью специального сообщения? Или обернуть другое исключение? Кроме того, как говорят другие, вы можете делать все как угодно. – DavidG

ответ

1

Вы должны определить эти конструкторы, потому что большинство разработчиков ожидают, что они будут там. Существует несколько шаблонов, таких как исключения обертывания, которые могут быть выполнены только в том случае, если вы можете указать внутреннее исключение. Эти лучшие практики гарантируют, что вы всегда можете использовать эти шаблоны. Например:

try { ... } 
catch (Exception ex) 
{ 
    throw new MyBusinessException(ex); 
} 

С другой стороны, это не обязательно. Если ваше исключение строит свое собственное сообщение из набора параметров, тогда нет смысла его изменять.

Смежные вопросы