2013-04-11 11 views
23

Chcę zobaczyć szczegóły wyjątku w Visual Studio Debugger bez przypisywania zmiennej do wyjątku. Obecnie muszę napisać coś takiego:Jak wyświetlić szczegóły wyjątku w debugerze bez przypisywania zmiennej do wyjątku?

try 
{ 
    //some code 
} 
catch (SecurityException ex) 
{ 
    //some code or ever no any code 
} 

Visual Studio generuje błąd informujący, że ex zmienna nigdy nie jest używany, ale trzeba tę zmienną, aby zobaczyć szczegół wyjątku podczas debugowania.

AKTUALIZACJA: Wiem, jak tłumić błąd VS "zmienna nigdy nie jest używana", problem polega na widzeniu wyjątku wewnątrz zegarka bez tej zmiennej. $ zmienna wyjątku @VladimirFrolov lub pomocnika wyjątku @MarcGravell jest odpowiedzią.

+0

Dodaj throw ex; w twoim haczyku? Lub Console.WriteLine (ex.getMessage()); lub jakąkolwiek inną wartość – Rob

Odpowiedz

50

Można zobaczyć swój wyjątek na liście Locals lub użyj $exception w liście Watch:

try 
{ 
    // some code 
} 
catch (SecurityException) 
{ // place breakpoint at this line 
} 
+0

Czy jest to nadal prawdziwe w przypadku VS.NET 2017? Wydaje się nie działać z vs2017 –

+0

@FrederikGheysels, zawsze używam '$ exception' w VS2017 i działa dobrze. – Andrew

1

wystarczy napisać

catch 
{//set breakpoint here 
} 
2

Można użyć funkcji z Visual Studio.

debug => Wyjątki => Sprawdź "Wyjątki" Common Language Runtime

To wszystko. Mam nadzieję, że to pomoże.

2

Aby uniknąć ostrzeżenie: „Zmienna«ex»jest zadeklarowany ale nigdy nie używane” w instrukcji catch, wykonaj następujące czynności:

try 
{ 
} 
catch (Exception) 
{ 
    // set break point 
} 

Albo użyć System.Diagnostics.Debug.WriteLine() lub Włącz śledzenie albo debugowania używać trace listener .

+2

Zdajesz sobie sprawę, że nie o to pyta Danila, prawda? – Andrew

+0

To nawet nie próbuje odpowiedzieć na zadane pytanie. – gdoron

2

użycie

catch (SecurityException /*without variable*/) 
{/*break Point*/ 
    //some code or ever no any code 
} 

lub

catch /*without parameter*/ 
{/*break Point*/ 
    //some code or ever no any code 
} 

ale myślę, że to jest to, co masz na myśli

catch (SecurityException ex) 
    { 
     MessageBox.Show(ex.ToString()); //for Winforms 
     Console.WriteLine(ex); //for console 
    } 
8

Nie trzeba nic robić: wystarczy umieścić punkt przerwania wewnątrz catch (lub na catch i wkrocz do bloku) i powinieneś zobaczyć zaproszenie, aby zobaczyć pomocnik wyjątku. Działa to na nagiej catch lub specyficznych dla danego typu catch(SecurityException) bloków:

enter image description here

który daje wszystko:

enter image description here

+0

Mój problem z tym dialogiem polega na tym, że jeśli w kolekcji "Dane" znajdują się komunikaty, nie widzę ich w tym oknie dialogowym. Czy istnieje sposób? –

+5

Czy to możliwe, że program Visual Studio 2015 nie ma już tej funkcji? Przynajmniej po prostu wchodzi do bloku 'catch' bez oferowania jakiegokolwiek pomocnika, tak jak w przypadku każdej innej linii kodu, bez względu na to, gdzie umieszczę punkt przerwania. – Andrew

+1

@Andrew to też widziałem. Pytałem o to tutaj: https://stackoverflow.com/questions/47872167/where-did-the-exception-helper-go-for-visual-studio-2015 –

Powiązane problemy