Chcę zrobić niestandardowy wyjątek w języku C#, ale teoretycznie muszę zrobić trochę parsowania, zanim będę mógł odczytać komunikat ExceptionMessage.Ustawianie komunikatu niestandardowego wyjątku bez przekazywania go do konstruktora podstawowego.
Problem polega na tym, że oryginalna wiadomość może być ustawiona tylko przez wywołanie konstruktora podstawowego Messsage
, więc nie mogę wykonać żadnej analizy z góry.
Próbowałem overring właściwość Message tak:
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; }
}
}
Problemem jest to, że Visual Studio debugger nadal pojawia się komunikat, że już przekazany do konstruktora, Plep w tym przypadku.
throw new CustomException(new { message="Show this message" })
skutkuje:
Gdybym opuścić konstruktor baza opróżnić pokaże bardzo ogólny wiadomość:
nieobsługiwany wyjątek typu 'App.CustomException' wystąpił w App.exe
Pytanie
Wygląda na to, że okno dialogowe wyjątków odczytuje niektóre pola/właściwości, do których również nie mam dostępu. Czy istnieje inny sposób ustawiania czytelnego dla człowieka komunikatu błędu poza konstruktorem podstawowym w Exception.
Zauważ, że używam programu Visual Studio 2012.
Twój kod działał dobrze dla mnie. i to powinno działać. – Swift
Kompiluje, ale jeśli rzucisz błąd, pokaże on wiadomość ("Plep") zamiast "Pokaż tę wiadomość". Proszę spojrzeć na dodatkowy przykład, który dodałem. –
Myślę, że idealne rozwiązanie nie jest dostępne. Podobny problem wystąpił podczas przetwarzania klas wyjątków wholoe w JSON. Właściwości niestandardowe są tracone w procesie. Czy możesz opisać scenariusz? Być może możemy pomóc w pewnym obejściu problemu. – Minduca