Заставить Visual Studio игнорировать исключения? - PullRequest
7 голосов
/ 11 сентября 2010

Я использую исключения для проверки ввода элемента управления в Silverlight 4. Когда я генерирую недопустимое исключение ввода, VS 2010 отображает всплывающее окно и останавливает программу.Я игнорирую это и возобновляю программу, и все продолжается нормально (так как исключение используется, чтобы сигнализировать об ошибке проверки.) Есть ли способ пометить одно исключение как проигнорированное?

Я следую за этим учебник .

Ответы [ 8 ]

16 голосов
/ 11 сентября 2010

Отладка -> Исключения -> Снять отметку

5 голосов
/ 11 сентября 2010

Menu, Debugger, Exceptions ...

В этом диалоговом окне вы можете удалить галочку в столбце «выбросить» для одного исключения или для всего пространства имен.Вы можете добавить свой собственный.etc.etc.

3 голосов
/ 07 мая 2011

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

Любые идеи приветствуются. Но очевидным решением для отладчика VS2010 будет поддержка флага DoNotBreakIfException: -)

Моя идея состояла в том, чтобы иметь возможность заменить код вроде

srng = TrySpecialCells(sheet, cellType);

от

srng = ExcelTry(() => sheet.Cells.SpecialCells(cellType));

где ExcelTry

[System.Diagnostics.DebuggerNonUserCode()] 
[System.Diagnostics.DebuggerHidden()]
private static T ExcelTry<T>(Func<T> call)
{
    try
    {
        return call();
    }
    catch (TargetInvocationException)
    {
        return default(T);
    }
    catch (COMException)
    {
        return default(T);
    }
}
3 голосов
/ 07 мая 2011

Я получил [System.Diagnostics.DebuggerHidden()] для работы, если я также выбрал

Отладка> Параметры> Отладка> Общие> Включить только мой код (только управляемый).

Доступ к объектной модели Excelмного, и мне действительно нравится иметь возможность запускать отладчик и перехватывать все исключения, так как мой код обычно меньше исключений.Тем не менее, Excel API выдает много исключений.

// [System.Diagnostics.DebuggerNonUserCode()]  works too
[System.Diagnostics.DebuggerHidden()]
private static Excel.Range TrySpecialCells(Excel.Worksheet sheet, Excel.XlCellType cellType)
{
    try
    {
        return sheet.Cells.SpecialCells(cellType);
    }
    catch (TargetInvocationException)
    {
        return null;
    }
    catch (COMException)
    {
        return null;
    }
}
1 голос
/ 09 июля 2018

Когда вы запускаете Visual Studio в режиме отладки, на нижней панели инструментов отображаются настройки исключений. Как только вы нажимаете на нее, появляются все исключения типа. Снимите исключения, которые вы хотите. Для пользовательского исключения, которое вы сделали для этого проекта, они расположены в Общих исключениях времени исполнения, в самом низу. Надеюсь, что это полезно.

1 голос
/ 03 октября 2010

Помещение этого свойства выше, которое выдает исключение, похоже, что оно должно работать, но, очевидно, не работает: [System.Diagnostics.DebuggerHidden()]:

    private String name;

    [System.Diagnostics.DebuggerHidden()]
    public String Name
    {
        get
        {
            return name;
        }
        set
        {
            if (String.IsNullOrWhiteSpace(value))
            {
                throw new ArgumentException("Please enter a name.");
            }
        }
    }
1 голос
/ 11 сентября 2010

Вы можете отключить некоторые броски блока, окружив их блоком

#if !DEBUG
       throw new Exception();
/// this code will be excepted in the debug mode but will be run in the release 
#endif
0 голосов
/ 17 января 2018

Начиная с Visual Studio 2015 для этого есть окно «Настройки исключений».

Отладка> Windows> Настройки исключений

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