Я хочу создать пользовательский Exception в С#, но теоретически мне нужно немного разобрать синтаксический анализ, прежде чем я смогу сделать читаемый пользователем ExceptionMessage.
Проблема заключается в том, что исходное сообщение может быть установлено только путем вызова базового конструктора Messsage
, поэтому я не могу выполнять синтаксический анализ заранее.
Я попытался перегрузить свойство Message следующим образом:
public class CustomException : Exception
{
string _Message;
public CustomException(dynamic json) : base("Plep")
{
// Some parsing to create a human readable message (simplified)
_Message = json.message;
}
public override string Message
{
get { return _Message; }
}
}
Проблема в том, что отладчик Visual Studio по-прежнему показывает сообщение, которое я передал в конструктор, Plep в этом случае.
throw new CustomException( new { message="Show this message" } )
приводит к:
Если я оставил базовый конструктор пустым, он покажет очень общее сообщение:
Необработанное исключение типа "App.CustomException" произошло в App.exe
Вопрос
Похоже, что в диалоговом окне Exception читается какое-либо поле/свойство, в котором у меня тоже нет доступа. Есть ли другой способ установить человеческое читаемое сообщение об ошибке вне базового конструктора в Exception.
Обратите внимание, что я использую Visual Studio 2012.