簡體   English   中英

這是“處理”異常的更好方法,我想讓氣泡冒泡但執行清理代碼

[英]Which is the better way to “handle” an exception I want to let bubble up but execute clean up code

我正在一個新項目上,有一段代碼我不想實際處理異常,但要確保關閉所有數據庫連接。 我想知道哪種方法是解決此問題的最佳方法。 我看到2種方法,但不確定哪一種會更清晰:

SqlConnection con = new SqlConnection(connectionstring);

try
{
    con.open()
    //DoStuff
}
catch(Exception)
{
    throw;
}
finally
{
    con.close();
    con.dispose();
}

要么

try
{
    con.open()
    //DoStuff
}
finally
{
    con.close();
    con.dispose();
}

無論哪種方式,我都將異常傳遞給要處理的調用代碼,但仍清理連接。

您可以使用using語句來封閉您的連接。 就像您的第二個代碼示例一樣,它將轉換為try-finally塊。

由於您沒有執行任何例外操作(例如記錄) ,因此可以省略catch塊。

您可以使用using ,如:

using (SqlConnection con = new SqlConnection(connectionstring))
{

}

這樣即使在出現異常的情況下,也可以確保將您的連接放置在using塊的末尾。 您只能對那些實現IDisposable接口的對象使用using語句。

如果您要處理未實現IDisposable對象,那么您的第二個代碼段(帶有try-finally)就足夠了,因為您希望異常冒泡。

暫無
暫無

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

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