捕获异常后关闭 SQL 连接是一种好习惯吗?

Is it a good practice to close an SQL connection after catching an Exception?

想知道我是否应该在发生错误后明确关闭我的 SQL 连接,或者这是否会自动完成?

假设我有一些点击事件

string conString = "something";
string query = "someQuery";
SqlConnection con = new SqlConnection(conString);
SqlCommand = new SqlCommand(query, con);
try {
   con.Open()
   //Something that will cause an error
} catch (Exception ex) 
{ 
   MessageBox.Show("Error Occurred")
   con.Close()
}

这是最佳做法还是毫无意义?想法是在关闭消息框后重试该操作。

无论异常还是成功,您都应该在完成后清理连接,但这并不一定意味着调用 Close。更常见的是,您只需使用 using 语句,它会在离开范围时调用清理 API (Dispose())。这很简单:

using (SqlConnection con = new SqlConnection(conString))
using (SqlCommand cmd = new SqlCommand(query, con))
{
    con.Open();
    //Something
}

或者在更新的 C# 版本中,如果 using 将在父作用域的末尾结束:

using var con = new SqlConnection(conString);
using var cmd = new SqlCommand(query, con);
con.Open();
//Something

你可以使用 Finally https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch-finally

  try
    {
        //exec
    }
    catch (Exception err)
    {
       // call error ;
    }
    finally
    {
        // close conn            
    }