Не удается прочитать исключение из фразы «Попробуй поймать» - PullRequest
0 голосов
/ 11 сентября 2011

я помещаю свой код между попытками, поймай вот так

try
{
///
}
catch(Exception ex)
{
//here is where i set the break point
}

но когда он входит в зацепку, я не могу прочитать ex в окнах быстрого просмотра, так как он говорит, что он не существует в текущем контексте. Это из самой IDE ?? потому что это происходит со всем проектом, над которым я работаю.

Ответы [ 6 ]

6 голосов
/ 11 сентября 2011

Вам нужно будет что-то сделать за исключением.Я считаю, что это связано с некоторыми оптимизациями, которые делает компилятор \ отладчик.По сути, компилятор \ отладчик увидит, что на исключение больше не ссылаются \ не используют и он не будет доступен.Сделайте что-то вроде следующего

try
{
///
}
catch(Exception ex)
{
   //here is where i set the break point
   Console.WriteLine(ex);
}
2 голосов
/ 11 сентября 2011

Вы компилируете в режиме Release.В режиме Release неиспользуемые переменные удаляются.Попробуйте в режиме отладки или сделайте что-нибудь с ex (например, зарегистрируйте его где-нибудь, Console.WriteLine, или сделайте странные трюки, которые могут запутать компилятор)

GC.KeepAlive(ex);

Компилятор обманут, и онне оптимизировать, напр.

1 голос
/ 11 сентября 2011

Какое издание (std / pro / express) редактора Visual Studio, которое вы используете, также имеет значение?Диалоговое окно QuickWatch может быть недоступно во всех версиях VS IDE.Пожалуйста, смотрите MSDN ссылку ниже

http://msdn.microsoft.com/en-us/library/cyzbs7s2%28VS.80%29.aspx

1 голос
/ 11 сентября 2011

Я получаю то же самое, когда ставлю точку останова на защелку, но когда я вступаю в скобки, я могу прочитать исключение.Убедитесь, что в скобках указан код:

        try
        {
            Convert.ToInt16("hoi");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.StackTrace);
        }
1 голос
/ 11 сентября 2011

Есть ли код в блоке catch? Попробуйте сделать вызов ex.ToString () там и установить точку останова для этого. Возможно, оптимизация компилятора устраняет блок, который ничего не делает.

0 голосов
/ 12 сентября 2011

Компилятор находился в режиме отладки, но я выяснил причину, поскольку некоторые из вас сказали, что все дело в оптимизации кода. Обозреватель решений> Сборка> Снимите флажок «Оптимизировать код». Это временное решение, так как я сделаю журнал для своего приложения позже. Спасибо всем за помощь, я очень ценю это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...