次の例のように、USING に対して TRY-CATCH を実装しています。
private void someDatabaseMethod(string userName) {
try {
using(var conn = new SqlConnection(connString))
using(var comm = new SqlCommand()) {
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = string.Concat(@"SELECT UserID FROM xxx WHERE UserName = '", userName,@"'");
conn.Open();
object x = comm.ExecuteScalar();
UserID = (x==null)? 0: (int)x;
}
} catch(Exception) {
throw;
}
}
USING内にあるTRY-CATCHを指しているように見えるこのMSDNの例を見たところです。したがって、私の例は次のようになります。
private void someDatabaseMethod(string userName) {
using(var conn = new SqlConnection(connString))
using(var comm = new SqlCommand()) {
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = string.Concat(@"SELECT UserID FROM xxx WHERE UserName = '", userName,@"'");
try {
conn.Open();
object x = comm.ExecuteScalar();
UserID = (x==null)? 0: (int)x;
} catch(Exception) {
throw;
}
}
}
これはより効率的なレイアウトですか?もしそうなら、なぜですか?
追加の注意事項
その理由はTRY-CATCH
、例外を再スローして、次のレベルにバブルアップするためCATCH
です。そのため、コードのどこかに a が必要です。