Мне интересно, следует ли мне делать исключения или вызывать Contract.Requires<TException>
Например:
public static void Function(String str)
{
if (str == null) throw new ArgumentNullException("str", "Input string cannot be null.");
// ...
}
против
public static void Function(String str)
{
Contract.Requires<ArgumentNullException>(str != null, "Input string cannot be null.");
// ...
}
Так как Contract.Requires<TException>
не требует символа CONTRACTS_FULL
, который я могу сохранить в своих выпусках.
Это мое мнение:
Кон: Вы не можете вызвать перегруженную версию конструктора настраиваемого типа исключения. Нет простого способа передать дополнительные параметры конструктору.
Pro: Поддержка статических инструментов (например, информирование вызывающего абонента о нарушении контракта).
Какой я должен использовать и для какой ситуации?