2012-05-02 1 views
0

私は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ブロックは常に実行されるべきではありませんか?

答えて

0

Visual Studioの[デバッグ|例外...異なるレベルの例外をチェックして "投げる"ことができます。 私はこれをいくつかのサードパーティのwin32 dllに起こしていることを知りました。そして、そのダイアログでより多くの例外の種類をチェックすることでキャッチすることができました。

関連する問題