我正在使用异常来验证Silverlight 4中的控件输入。当我抛出无效的输入异常时,VS 2010会显示弹出窗口并停止程序。我忽略了这一点并恢复了程序,一切都继续正常(因为异常用于表示验证错误。)有没有办法将一个异常标记为忽略?
我正在关注此tutorial。
答案 0 :(得分:16)
调试 - >例外 - >取消选中
答案 1 :(得分:5)
菜单,调试器,例外......
在该对话框中,您可以删除'thrown'列中的复选标记,以查找整个命名空间的一个例外。你可以添加自己的。 etc.etc。
答案 2 :(得分:3)
如果我也选择
,我可以[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;
}
}
答案 3 :(得分:3)
我尝试制作一个通用的解决方案,我可以放任何调用,如果我得到异常,我希望调试器不要停止,但我没有让它工作。
任何想法都表示赞赏。但显而易见的解决方案是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);
}
}
答案 4 :(得分:1)
你可以通过在块
中包围来禁用一些throw块#if !DEBUG
throw new Exception();
/// this code will be excepted in the debug mode but will be run in the release
#endif
答案 5 :(得分:1)
将其置于抛出异常的属性上方似乎应该可以正常工作,但显然不会:
[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.");
}
}
}
答案 6 :(得分:1)
在调试模式下运行Visual Studio时,底部工具栏上有“异常设置”。单击它后,所有类型例外。取消选中所需的异常。对于您为此项目创建的“自定义”异常,它们位于“公共语言运行时异常”的最底部。希望对您有所帮助。
答案 7 :(得分:0)
从Visual Studio 2015开始,有一个Exception Settings窗口。
调试&gt; Windows&gt;例外设置