Bu kod, ODBC bağlantılı bir veritabanından okuyan ve bu veritabanına yazan bir uygulamanın parçasıdır. Veritabanında bir kayıt oluşturur ve ardından bir kaydın başarıyla oluşturulup oluşturulmadığını kontrol eder ve ardından geri döner true
.
Kontrol akışına ilişkin anlayışım şu şekildedir:
command.ExecuteNonQuery()
InvalidOperationException
"Bir yöntem çağrısı nesnenin mevcut durumu için geçersiz olduğunda" bir atma yapmak için belgelenmiştir . Bu nedenle, eğer bu olursa, try
bloğun yürütülmesi durur, finally
blok yürütülür, ardından return false;
altta çalıştırılır .
Ancak, return false;
IDE'm erişilemez kod olduğunu iddia ediyor . Ve doğru gibi görünüyor, onu kaldırabilirim ve herhangi bir şikayet olmadan derler. Ancak, benim için, belirtilen istisnanın atıldığı kod yolu için bir dönüş değeri olmayacakmış gibi görünüyor.
private static bool createRecord(String table,
IDictionary<String,String> data,
System.Data.IDbConnection conn,
OdbcTransaction trans) {
[... some other code ...]
int returnValue = 0;
try {
command.CommandText = sb.ToString();
returnValue = command.ExecuteNonQuery();
return returnValue == 1;
} finally {
command.Dispose();
}
return false;
}
Burada anlama konusundaki hatam nedir?
Dispose
açıkça aramayın , ancak şunu yazın using
:using (var command = ...) {command.CommandText = sb.ToString(); return command.ExecuteNonQuery(); }
finally
blok düşündüğünüzden daha başka bir şey anlamına gelir.