Иногда тип исключения достаточно уникален, чтобы указать точную проблему, например ArgumentOutOfRangeException .В других случаях исключение носит более общий характер и может быть выброшено по нескольким причинам.В этом сценарии, кажется, единственная дополнительная информация находится в свойстве сообщения об исключении.
В моих текущих обстоятельствах я получаю сообщение CommunicationException, которое выдает сообщение об ошибке:
Превышена квота максимального размера сообщения для входящих сообщений (65536)
Поскольку с помощью CommunicationException может выдаваться несколько разных ошибок, не рекомендуется ли использовать свойство сообщения для определения причины, например:
catch (CommunicationException ex)
{
if (Regex.IsMatch(ex.Message, "The maximum message size quota for incoming messages .* has been exceeded"))
{
// handle thrown exception
}
throw;
}
Будут ли эти сообщения постоянными и надежными во всех системах?Есть ли другие соображения, такие как локализация?
Вывод:
Мой сценарий с «CommunicationException» был плохим примером, так как позже я понял, что былQuotaExceededException в свойстве InnerException.Благодаря ответам я знал, что нужно искать любые данные, которые существовали в исключении, чтобы указать точную причину.В данном случае это было свойство InnerException.
Что касается вопроса о том, следует ли использовать свойство сообщения для определения причины, то, по-видимому, существует общее мнение, что его следует избегать, если нетнет альтернативы.Значение свойства сообщения может не оставаться постоянным в разных системах из-за локализации.