2013-04-11 1 views
23

Я хочу увидеть деталь исключения в отладчике visual studio, не присваивая переменной исключение. В настоящее время я должен написать что-то вроде этого:Как увидеть деталь исключения в отладчике без назначения переменной для исключения?

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

Visual Studio выдает ошибку о том, что бывшие переменном никогда не используются, но мне нужен это переменный, чтобы увидеть детали исключения во время отладки.

ОБНОВЛЕНИЕ: Я знаю, как подавить переменную VS ошибки 'никогда не используется', проблема заключается в том, чтобы исключить внутренние часы без этой переменной. $ переменная исключения by @VladimirFrolov или помощник исключения by @MarcGravell - это ответ.

+0

Добавить бросок экс; в вашем улове? Или Console.WriteLine (ex.getMessage()); или любое другое значение – Rob

ответ

50

Вы можете видеть ваше исключение в списке Locals или использовать $exception в списке Watch:

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

Это все еще верно для VS.NET 2017? Кажется, что не работает с vs2017 –

+0

@FrederikGheysels, я всегда использую '$ exception' в VS2017, и он работает отлично. – Andrew

2

Вы можете использовать функции из Visual Studio.

Debug => Исключения => Проверить "Common Language Runtime Исключения"

Вот так. Надеюсь, поможет.

2

Чтобы избежать получения предупреждения: «Переменная„экс“объявлена, но никогда не используется» в водосборный заявлении, сделайте следующее:

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

Или используйте System.Diagnostics.Debug.WriteLine() или включить отслеживание или отладки использовать trace listener ,

+2

Вы понимаете, что это не то, о чем Данила спрашивает, верно? – Andrew

+0

Это даже не попытка ответить на заданный вопрос. – gdoron

2

использование

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

или

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

, но я думаю, что это то, что вы имеете в виду

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

Вам не нужно ничего делать: просто поставить точку останова внутри catch (или на catch и шаг один раз в блок), и вы должны увидеть приглашение увидеть помощник исключения. Это работает для невооруженного catch или типоспецифичными catch(SecurityException) блоков:

enter image description here

, который дает вам все:

enter image description here

+0

Моя проблема с этим диалогом заключается в том, что есть сообщения в коллекции «Данные», я не могу просматривать их в этом диалоговом окне. Есть ли способ? –

+5

Возможно ли, что Visual Studio 2015 больше не имеет этой функции? По крайней мере, он просто входит в блок catch, не предлагая никакого помощника, как и с любой другой строкой кода, независимо от того, где я помещаю точку останова. – Andrew

+1

@ Андрей это то, что я видел. Я спросил об этом здесь: https://stackoverflow.com/questions/47872167/where-did-the-exception-helper-go-for-visual-studio-2015 –

Смежные вопросы