Давайте предположим, что я получил этот код:
internal static bool WriteTransaction(string command)
{
using (SqlConnection conn = new SqlConnection(SqlConnectionString))
{
try
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(command, conn))
cmd.ExecuteNonQuery();
}
catch { return false; }
}
return true;
}
Ну, я поместил using
коннекта вне предложения try
/ catch
, потому что конструктор SqlConnection
не будет выдавать никаких исключений (как говорится). Поэтому в предложении содержится conn.Open()
, поскольку оно может выдавать некоторые исключения.
Теперь, это правильный подход к кодированию? Посмотрите: конструктор SqlCommand
также не генерирует исключения, но для сокращения кода я поместил его вместе с cmd.ExecuteNonQuery()
в оба элемента try
/ catch
.
Или,
может быть, этот должен быть вместо этого?
internal static bool WriteTransaction(string command)
{
using (SqlConnection conn = new SqlConnection(SqlConnectionString))
{
try { conn.Open(); }
catch { return false; }
using (SqlCommand cmd = new SqlCommand(command, conn))
try { cmd.ExecuteNonQuery(); }
catch { return false; }
}
return true;
}
(простите за мой английский)