簡體   English   中英

.NET相當於Ruby的begin / rescue / else

[英].NET equivalent of Ruby's begin/rescue/else

Ruby有一個else塊,可以用於開始/救援(try / catch for .NET人員)

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中是否有提供此功能的構造?

在.NET中,您只需在#some code#some code

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

任何異常中// some code將防止“只執行”部分的發生,因為它會跳轉到catch ,然后finally

在其他語言中有一些與異常處理有關的事情,但在C#中卻沒有。 一個這樣的例子是fault處理程序 - 在IL中,可以定義一個僅在出現錯誤時才會觸發的處理程序。

fault似乎與您想要的相反,但您可以構造邏輯,使得某些代碼只會在發生錯誤時執行,無論您如何處理異常。 .NET將為迭代器生成try..fault塊。 Bart De Smet曾經挑戰他博客的讀者嘗試模擬錯誤處理程序,你可以在這里閱讀更多相關信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM