尝试catch后继续执行程序

SKu*_*mar 2 .net c# oop exception-handling

当我使用try,catch块时,如果抛出任何异常,则在处理catch之后停止执行程序.但是,即使有异常,我也需要继续执行程序.任何人都可以帮我怎么做?

Nic*_*rey 9

未捕获的异常终止执行.

如果捕获了异常而没有重新抛出异常,则执行catch()子句,然后执行finally()子句(如果有的话),然后继续执行try/catch/finally块之后的语句.

如果捕获并重新抛出异常,则执行catch()子句,直到并包括throw语句; 执行finally()子句(如果有的话),然后(重新)抛出异常并继续堆栈展开.

当调用堆栈被展开时,finally()子句在超出范围时执行,而Dispose()被调用为变量声明在using语句超出范围.

没有发生的是控件不会(并且不能)在抛出原始异常时恢复.听起来您正在捕获高级别的异常 - 例如您的Main()方法 - 并期望执行在原始故障点继续.

要实现这一点,您需要在处理使上下文有意义的时刻捕获异常,并且在处理异常后,重试失败操作或忽略该问题.

做好异常处理相当困难; 因此,最好的异常处理实践是不处理它的格言.例外情况应该只是:例外.你的代码当然不应该抛出异常; 您通常也不应将例外用作验证技术或控制流操作符.


Jac*_*cob 7

如果我理解正确,这就是你想要的:

try
{
    Statement1(); // <-- Exception is thrown in here
    Statement2(); // <-- You want to go here after the catch block executes
}
catch
{
    HandleException();
}
Run Code Online (Sandbox Code Playgroud)

Try/catch块不能以这种方式工作.您必须按如下方式重写代码:

try
{
    Statement1();
}
catch
{
}


try
{
    Statement2();
}
catch
{
}
Run Code Online (Sandbox Code Playgroud)