IDE = VS7または2002例外処理 - 行がスキップされ、sqleがNULLです
こんにちは、私は本当に奇妙な問題を抱えています。コードが期待通りに実行されていないようです。私はデバッガを介してこれを実行しており、それは本当に不思議なことです。
仮想ディレクトリがASP.NET 1.0.3705を使用していることを確認しました。
コードは次のと私は、デバッガがコメントで実行ステップとして私を示して何かを説明:
try
{
objConnection.Open(); // STARTS HERE
objCommand.ExecuteNonQuery(); // DOES NOT THROW EXCEPTION
int c = 0; // THIS LINE IS EXECUTED
}
catch (SqlException sqle)
{
LogError(); // THIS LINE IS NOT EXECUTED
throw sqle; // THIS LINE IS EXECUTED AFTER THE int c = 0;
// sqle IS NULL
// EXCEPTION IS NOT CAUGHT AND
// EXECUTION CONTINUES IN FINALLY BLOCK
}
finally
{
// EXECUTES AS EXPECTED FROM HERE ON OUT,
// AS THOUGH THE throw sqle; DID NOT HAPPEN.
if (objConnection.State == ConnectionState.Open) objConnection.Close();
}
は、誰もが前に、この奇妙な動作を経験していますか?どのようにそれを修正するための任意のアイデア?私は広範囲にメソッドを変更するかもしれませんが、なぜこれが起こっているのか知りたいのですが。
私はsqleがnullであるため、スローが期待どおりに動作しない理由が考えられます。しかし、なぜ私たちは最初にこのコードブロックに飛びついたのですか?
私はそれを数回リロードし、保存して再構築し、デバッガで実行し、この動作を複数回見ました。
ありがとうございました!
すべてのベスト、
グラハム
itsmattとDavid、 私が知る限り、問題はデバッガです。私はDebug.WriteLine()を使うDavidのアドバイスに従った。私は同様の問題を経験していた別のコードを持っていました。例外は発生していてはいけませんでした。 デバッガはif文を見て、その中でコードを実行することに決めました。例外が発生するはずです。 WriteLineステートメントを見ると、ifステートメント内のコードブロックが実際には実行されなかったことがわかります。 デバッガがコードを実行する方法と、実際にどのように実行されるかをデバッガがどのように考えるかは異なります。 あなたの助けをありがとう –
それを聞いてよかったです。デバッガが見ているコンパイルされたアセンブリのようなサウンドは、ソースより古いです。/binフォルダを削除して、プロジェクトを再ビルドしてみることもできます。 – VVS