2010-05-07 16 views
6

W mojej aplikacji używam okien dialogowych do wyświetlania informacji o błędach.Komunikaty o błędach MessageBox C#

try 
{ 
    // Something... 
} 
catch (SystemException ex) 
{ 
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
} 

To było w porządku na początku, ale jak rośnie mój program staje się coraz trudniejsze do znalezienia bloku try-catch gdzie ten błąd jest generowany. Czy istnieje sposób wyświetlenia linii kodu lub funkcji, w której wygenerowano błąd? Korzystam z Microsoft Visual C# 2008 Express Edition. Dzięki.

+0

W przypadku wyświetlania okna błędu często trzeba ukryć niechciane szczegóły (takie jak StackTrace) przed użytkownikiem. Bardzo polecam jednak, abyś wylogował gdzieś wyjątek (za pomocą StackTrace), aby móc go później debugować. Istnieje kilka dobrych pakietów logowania, takich jak NLog lub Log4Net, z których możesz skorzystać, aby pomóc w tym. –

Odpowiedz

6

To daje wiele informacji na temat sposobu, który spowodował błąd (The StackTrace)

1

Wystarczy wyświetlić Exception.StackTrace. Będzie zawierał wszelkie przydatne informacje, które powinny pomóc ci znaleźć naruszającą linię kodu.

0

Istnieje Exception.StackTrace, który często jest trochę za pudełko wiadomości. Pomocne też powinno być Exception.TargetSite.Name.

0

chcesz przejrzeć parametr ex.StackTrace(), który zawiera pełne informacje na temat lokalizacji zgłaszanego wyjątku. Możesz również sprawdzić wyjątek InnerException.

0

Dlaczego nie dodasz dodatkowych informacji do komunikatu o błędzie, aby łatwiej go było znaleźć? Możesz dodać trochę więcej tekstu po znaku "Błąd" w zależności od tego, gdzie tworzy się wiadomość.

Wyjątek, który jest zgłaszany, zawiera kilka funkcji umożliwiających uzyskanie bardziej szczegółowego wyjaśnienia błędu.

+0

Nie chcę wymyślać nowego komunikatu o błędzie (który prawdopodobnie nigdy nie zobaczę) dla każdego możliwego bloku catch. –

+0

Mam na myśli używanie metody ex.ToString(), a nie ręczne dodawanie tekstu. –

0

Istnieje kilka dostępnych opcji.

  1. umieścić coś w oknie komunikatu, jeśli chcesz dać informacja kontekstowa
  2. Pokaż informacje śledzenia stosu, jeśli na budowie debugowania numery linii zostaną włączone

Chciałbym jednak przestrzec wokół ta praktyka, jeśli zauważysz, że dostajesz zbyt wiele i nie możesz ustalić, gdzie, zacznę patrzeć na zmianę struktury kodu, aby upewnić się, że nie masz problemów.

+0

Nie chcę wymyślać nowego komunikatu o błędzie (który prawdopodobnie nigdy nie zobaczę) dla każdego możliwego bloku catch. –

Powiązane problemy