我正在使用異常驗證Silverlight 4中的控件輸入。當我拋出無效輸入異常時,VS 2010將顯示彈出窗口並停止程序。我忽略了這一點並恢復了程序,並且一切正常(因爲異常用於表示驗證錯誤。)有沒有辦法將該異常標記爲忽略?使Visual Studio忽略異常?
我跟隨此tutorial。
我正在使用異常驗證Silverlight 4中的控件輸入。當我拋出無效輸入異常時,VS 2010將顯示彈出窗口並停止程序。我忽略了這一點並恢復了程序,並且一切正常(因爲異常用於表示驗證錯誤。)有沒有辦法將該異常標記爲忽略?使Visual Studio忽略異常?
我跟隨此tutorial。
調試 - >例外 - >取消選中
是的,但你應該能夠直接從彈出框中禁用它。 – 2014-01-24 11:05:12
菜單,調試程序,例外...
在該對話框中,可以去掉勾選「拋出」列一個例外,對整個命名空間。你可以添加你自己的。 etc.etc。
這是有用的信息,並允許我們創建一個自定義異常來重置使用非託管dll FPU寄存器,並能夠正常調試。非常便利! – ouflak 2015-01-07 13:32:47
您可以通過塊
#if !DEBUG
throw new Exception();
/// this code will be excepted in the debug mode but will be run in the release
#endif
這不會阻止拋出異常嗎?我希望它被拋出,我只是不希望VS停止應用程序並彈出該框。 – 2010-09-10 22:11:24
把這個拋出異常好像它應該工作的性質上面周邊禁用某些拋出塊,但顯然不會: [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.");
}
}
}
我得到[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;
}
}
我試圖使一個通用的解決方案,我可以,我想調試器不停止,如果我得到一個異常任何呼叫放身邊,但我沒有得到它的工作。
任何想法表示讚賞。但顯而易見的解決方案將是VS2010調試器支持一個標誌DoNotBreakIfException :-)
我的想法是能夠通過
srng = ExcelTry(() => sheet.Cells.SpecialCells(cellType));
來代替像
srng = TrySpecialCells(sheet, 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);
}
}
從Visual Studio 2015開始,有一個例外設置窗口這個。
調試>窗口>例外設置
的幾乎如出一轍:http://stackoverflow.com/questions/2689065/supress-output-from-visual-studio-output-pane-c/2689187#2689187 (我的答案在這裏同樣適用)。我建議不要使用異常來驗證用戶輸入 - 如果有的話,正確的輸入是異常並且違反規則,而不是相反。 – 2010-09-10 21:53:06
我知道。但是這似乎是Silverlight實現它的方式。 (或者看起來,我是SL的新手。) – 2010-09-10 22:11:53
你可以考慮'Try *'方法,比如'int.TryParse(「123」,ref result)'返回一個'bool'指示操作是否成功。 – zneak 2010-10-03 17:12:09