有没有办法在C#中继续异常?

时间:2009-12-16 09:26:06

标签: c# .net exception continue

当程序中出现意外异常时(在调试器中)。有时你只想跳过它,因为在那个时候杀死程序比继续更有害。或者您只是想继续,因为您对另一个错误/错误更感兴趣

是否有选项/ compilerflag / secretswitch来启用它?

我理解异常应立即解决,但有些情况(如我所描述),其中只是想暂时跳过它

8 个答案:

答案 0 :(得分:6)

如果代码中没有适当的catch块,则无法执行此操作。但是,我不记得曾经想要这样做:如果您的代码不知道如何真正处理异常,为什么要继续?那时候你状态很糟糕 - 继续下去会很危险。

您能举例说明为什么要继续调试器会话而不是生产代码吗?

答案 1 :(得分:3)

C#中的异常不可恢复,但事件是 - 这就是通常实现可恢复异常的方式:cancellable events。另请参阅this question

答案 2 :(得分:2)

使用try-catch块,捕获时,不要对异常做任何事情。

答案 3 :(得分:1)

如果您进入调试器,则右键单击要继续的行并选择:设置下一个语句...但使用它需要您自担风险!

答案 4 :(得分:1)

在调试模式中单步执行代码时,您可以跳过执行引发意外异常的指令。但是如果异常已经抛出并且你没有try / catch它会传播。

答案 5 :(得分:0)

查看Exception Handling Application Block及相关文档。它包含处理应用程序异常的最佳实践,并且为您完成了大量的框架代码,即日志记录。

答案 6 :(得分:0)

如果您想知道要允许的异常。然后你可以在下面这样做

try
{
       // your functionality
}
catch(Exception ex)
{
     // Catch only the exceptions you need to point out
}
finally
{
   //do what you want to complete with this function.
}

答案 7 :(得分:0)

我认为通过“跳过”意味着您希望程序在异常后继续工作。 当然,这可以通过在使用try-catch块时捕获异常来实现。

如果异常不是应用程序停止(例如,某些关键变量在异常后未初始化,并且您无法继续工作),建议您至少在继续之前记录它。当然,放

  

catch(例外e){}

源中的任何地方都不会导致稳定的应用程序;)

如果您的问题更多与调试器相关(您不希望调试器在每个抛出的异常上停止),那么在VS中有一个位置可以更改此位置:

调试菜单中,选择例外。您将看到所有可能的异常,并且您可以在抛出或未由用户处理时调整其行为。