3

Ruby 有一个 else 块,可以进入 begin/rescue(.NET 人员的 try/catch)

begin
 #some code
rescue
 #oh noes! Catches errors like catch blocks in .NET
else
 #only executes when NO errors have occured
ensure
 #always executes - just like the finally in .NET
end

else 块中的代码只有在没有引发错误的情况下才会执行。.NET 中是否有提供此功能的构造?

4

2 回答 2

3

在 .NET 中,您可以在以下代码之后列出代码#some code

try
{
   // some code
   // Only executes when NO errors have occurred
}
catch (Exception e)
{
    // Catches errors
}
finally
{
    // Always executes
}

内部的任何异常都// some code将阻止“仅执行”部分的发生,因为它会跳转到catchthen finally

于 2013-02-15T23:26:30.000 回答
1

关于异常处理,有些事情在其他语言中是可能的,但在 C# 中是不可能的。一个这样的例子是fault处理程序——在 IL 中,可以定义一个处理程序,该处理程序仅在出现错误时才会触发。

fault似乎与您想要的相反,但您可以构建逻辑,以便某些代码仅在发生错误时执行,而不管您如何处理异常。try..fault.NET 将为迭代器生成一个块。Bart De Smet 曾向他博客的读者提出挑战,试图模拟故障处理程序,您可以在此处阅读更多相关信息。

于 2013-02-15T23:51:54.680 回答