私はVS2010 Windowsサービスプロジェクトを作成しました。その中で、Microsoft.SqlServer.Management.Smo.Database.ExecuteWithResults(式)メソッドを呼び出します。私のシナリオでは、式には無効なSQLが含まれているため、コールは期待どおりの例外で失敗します。 、SQL SMO例外によってfinallyブロックがスキップされますか?
try { database.ExecuteWithResults(invalid-sql) }
finally { // code here is NOT executed }
しかし、私はのtry/catch /に変更した場合、finallyブロック:期待できない何
は方法がのtry/finallyブロック内で呼び出されますが、finallyブロックが実行されることはありませんということですcatchとfinallyコードの両方が呼び出されます。
try { database.ExecuteWithResults(invalid-sql) }
catch(Exception) { // code here is executed fine }
finally { // as is this code }
ここに何か不足していますか? finallyブロックは常に実行されるべきではありませんか?