Ruby有一个else块,可以用于开始/救援(try / catch for .NET folks)
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中是否有提供此功能的构造?
答案 0 :(得分:3)
在.NET中,您只需在#some code
之后列出代码:
try
{
// some code
// Only executes when NO errors have occurred
}
catch (Exception e)
{
// Catches errors
}
finally
{
// Always executes
}
// some code
中的任何异常都会阻止“仅执行”部分的发生,因为它会跳转到catch
然后finally
。
答案 1 :(得分:1)
在其他语言中有一些与异常处理有关的事情,但在C#中却没有。一个这样的例子是fault
handler - 在IL中,可以定义一个仅在出现错误时才会触发的处理程序。
fault
似乎与您想要的相反,但您可以构造逻辑,使得某些代码只会在发生错误时执行,无论您如何处理异常。 .NET将为迭代器生成try..fault
块。 Bart De Smet曾经挑战他博客的读者尝试模拟错误处理程序,你可以阅读更多关于它的信息here。