1) Пользовательские исключения могут помочь сделать ваши намерения ясными.Несколько вопросов об исключениях/управлении потоком и применении пользовательских исключений
Как это может быть? Цель состоит в том, чтобы обрабатывать или регистрировать исключение, независимо от того, является ли этот тип встроенным или обычным.
Основная причина, по которой я использую пользовательские исключения, - не использовать один тип исключения для решения одной и той же проблемы в разных контекстах (например, параметр имеет значение null в системном коде, который может влиять на внешний фактор и пустую корзину покупок). Тем не менее, разделение между кодом системы и бизнес-домена и использование разных типов исключений кажется очень очевидным и не делает большинство пользовательских исключений. В связи с этим, если пользовательские исключения охватывают исключения для бизнеса, я мог бы также получить все места, которые являются источниками исключений на уровне бизнес-домена, используя «Найти все ссылки». Стоит ли добавлять исключения, если вы проверяете аргументы метода как null, используете их несколько раз, а затем добавляете catch? Является ли реалистичный риск того, что внешний фактор или какая-либо другая причина уродства может привести к тому, что аргумент будет равен нулю после проверки?
2) Что означает, когда исключения не должны использоваться для управления потоком программ и почему бы и нет? Я предполагаю, что это походит на:
if (exceptionVariable != null)
{
}
Как правило, полезно заполнять каждую переменную в объекте исключения? Как разработчик, вы ожидаете, что всякая возможная переменная будет заполнена другим кодером?
@dotnetdev Вероятно, не рекомендуется принимать до того, как у других была возможность ответить, особенно потому, что я только обратился к половине вопроса. – 2010-04-08 22:54:10