5

首先,我运行我的应用程序,任何错误(处理与否)都会引发异常。

其次,我使用 aTypeConverter将用户输入字符串转换为实际对象。

第三个TypeConverter没有提供任何TryConvert方法,所以我坚持使用异常进行验证,在这里使用这段相当难看的代码:

try
{
    this._newValue = null;
#pragma Magic_SuppressBreakErrorThrown  System.Exception
    this._newValue = this.Converter.ConvertFromString(this._textBox.Text);
#pragma Magic_ResumeBreakErrorThrown  System.Exception
    this.HideInvalidNotification();
}
catch (Exception exception)
{
    if (exception.InnerException is FormatException)
    {
        this.ShowInvalidNotification(this._textBox.Text);
    }
    else
    {
        throw;
    }
}

我发现每次输入-of-1或其他一些无效字符时让 VS 中断执行会让人分心。我可以使用与此类似的东西,但也不是所有要转换为TryParse方法的类型。

我希望可能有某种方法可以在try不更改我的异常设置的情况下禁用代码部分的中断。

4

4 回答 4

16

将 try/catch 放入它自己的方法中并在方法上设置此属性:

[System.Diagnostics.DebuggerNonUserCode]

调试器不会在该方法内停止(即使对于断点)。当方法完成时,异常已经被处理,所以它也不会在那个时候中断。

于 2011-03-06T15:22:14.477 回答
0

在 Debug -> Exceptions 菜单下,您可以关闭任何特定异常类型的中断。

于 2010-03-25T07:03:02.603 回答
0

不是直接的答案,但您可以在尝试使用 TypeConverter 之前创建一个对字符串值进行完整性检查的方法,然后对其应用 Conditional("DEBUG") 属性 - 因此生产代码继续进行在调试时使用 TypeConverter(并捕获所有失败的情况),在点击 TypeConverter 之前会发现并避免常见错误。

通过应用条件,您可以完全避免在代码的发布版本中使用此代码 - 它只是为了捕获当前正在蔓延的常见错误。

于 2010-03-25T11:42:35.137 回答
-1

我不确定我是否完全遵循您的问题,但如果您想在特定异常上禁用 VS break,您可以使用“异常”对话框 (ctrl-alt-e) 对其进行自定义。打开公共语言运行时异常树并向下钻取特定异常并将其关闭。FormatException 位于系统下。这样 VS 将在除 FormatException 之外的所有托管异常上中断。

于 2010-03-25T07:03:05.107 回答