首先,我运行我的应用程序,并在任何错误(处理或未处理)上抛出异常。
其次我使用TypeConverter
将用户输入字符串转换为实际对象。
第三个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;
}
}
我发现每次输入-
-1
或其他一些无效字符时,VS断开执行会令人分心。我可以使用与this类似的内容,但不是我转换为的所有类型都使用TryParse
方法。
我希望可能有某种方法可以在try
内禁用中断代码段而不更改我的异常设置。
答案 0 :(得分:16)
将try / catch放在自己的方法中,并在方法上设置此属性:
[System.Diagnostics.DebuggerNonUserCode]
调试器不会在该方法内停止(即使对于断点)。当方法完成时,异常已被处理,因此它也不会在那时中断。
答案 1 :(得分:1)
在Debug - >下例外菜单可以为任何特定的异常类型提供中断。
答案 2 :(得分:1)
我不确定是否完全按照您的问题进行操作,但如果要在特定异常上禁用VS break,可以使用“例外”对话框(ctrl-alt-e)对其进行自定义。打开“公共语言运行时异常”树,深入查看特定异常并将其关闭。 FormatException位于System下。这样,除了FormatException之外,VS将破坏所有托管异常。
答案 3 :(得分:0)
不是直接答案,但您可以在尝试使用TypeConverter之前创建一个对字符串值进行完整性检查的方法,然后对其应用条件(“DEBUG”)属性 - 因此生产代码继续使用TypeConverter(并捕获所有失败的情况),同时在调试时,在击中TypeConverter之前拾取并避免常见错误。
通过应用条件,您可以避免在代码的发布版本中使用此代码 - 它只是用于捕获当前正在进行的常见错误。