0

VS2010 Windows サービス プロジェクトを作成しました。その中で、メソッド Microsoft.SqlServer.Management.Smo.Database.ExecuteWithResults(expression) を呼び出します。私のシナリオでは、式に無効な SQL が含まれているため、期待どおりに呼び出しが失敗して例外が発生します。

メソッドが try/finally ブロック内で呼び出されることは想定されていませんが、finally ブロックは決して実行されません。

try { database.ExecuteWithResults(invalid-sql) } 
finally { // code here is NOT executed }

ただし、それを try/catch/finally ブロックに変更すると、catch コードと finally コードの両方が呼び出されます。

try { database.ExecuteWithResults(invalid-sql) } 
catch(Exception) { // code here is executed fine }
finally { // as is this code }

ここで何か不足していますか?finally ブロックは常に実行されるべきではありませんか?

4

1 に答える 1

0

Visual Studio で、[デバッグ] | [デバッグ] に移動します。例外...、「スロー」されるさまざまなレベルの例外をチェックしてみてください。以前は、これが一部のサード パーティの win32 dll で発生しているだけで、そのダイアログでより多くの例外の種類をチェックすることでキャッチできました。

于 2012-05-15T01:44:53.897 に答える