如果在Try / Catch中没有捕获,则运行代码

时间:2012-07-31 10:58:27

标签: c#

当我使用Try / Catch时,如果没有检测到错误且没有Catch,有没有像If / Else那样运行代码的方法?

try
{
    //Code to check
}
catch(Exception ex)
{
    //Code here if an error
}

//Code that I want to run if it's all OK ?? 

finally
{
    //Code that runs always
}

5 个答案:

答案 0 :(得分:20)

try块的末尾添加代码。如果之前没有例外,显然你只会到达那里:

try {
  // code to check

  // code that you want to run if it's all ok
} catch {
  // error
} finally {
  // cleanup
}

你可能应该改变你的捕获方式,你只捕获你期望的异常,而不是弄平一切,这可能包括你想要运行的代码中抛出的异常,如果一切正常«。

答案 1 :(得分:11)

如果您需要在try代码成功时始终执行,请将其放在try块的末尾。只要try块中的前一个代码无异常地运行,它就会运行。

try
{
    // normal code

    // code to run if try stuff succeeds
}
catch (...)
{
    // handler code
}
finally
{
    // finally code
}

如果您需要替代异常处理“成功”代码,您可以随时嵌套尝试/捕获:

try
{
    // normal code

    try
    {
        // code to run if try stuff succeeds
    }
    catch (...)
    {
        // catch for the "succeded" code.
    }
}
catch (...)
{
    // handler code
    // exceptions from inner handler don't trigger this
}
finally
{
    // finally code
}

如果您的“成功”代码必须在finally之后执行,请使用变量:

bool caught = false;
try
{
    // ...
}
catch (...)
{
    caught = true;
}
finally
{
    // ...
}

if(!caught)
{
    // code to run if not caught
}

答案 2 :(得分:5)

将它放在可能引发异常的代码之后。

如果抛出异常,它将不会运行,如果没有抛出异常,它将运行。

try
{
    // Code to check
    // Code that I want to run if it's all OK ??  <-- here
}
catch(Exception ex)
{
    // Code here if an error
}
finally
{
    // Code that runs always
}

答案 3 :(得分:1)

try {
    // Code that might fail
    // Code that gets execute if nothing failed
}
catch {
    // Code getting execute on failure
}
finally {
    // Always executed
}

答案 4 :(得分:1)

我会这样写:如果对方法的调用运行良好,那么成功只是try

中的最后一件事
try 
{
    DoSomethingImportant();
    Logger.Log("Success happened!");
}
catch (Exception ex)
{
    Logger.LogBadTimes("DoSomethingImportant() failed", ex);
}
finally 
{
    Logger.Log("this always happens");
}