しようとすると、プログラムを終了していないキャッチ、彼らはただ、例外が発生した場合、何かのコードの流れを制御します。
tryブロックで例外が発生すると、(対応する)catchブロックの最初の行で実行が継続されます。 catchブロックの実行後、コードはcatchの後の最初の行に続きます。この場合、ループを続行するEnd While
になることがあります。
したがって、この
While dr.Read
Try
InsertRowIntoDataBase()
Catch ex As Exception
LogErrorToFile(ex)
End Try
End While
などの建設があなたのために働く必要があります。
しかし、これは、問題が何であっても、データが無効であるか、SQLサーバーが停止しているか、コードにエラーがあっても、例外を生成してログに記録するため、悪い設計ですいくつかのNullReferenceExceptionが潜んでいます)。例外の処理は特定のケースに限定する必要があります。このようなデータベースとの問題、に:また
While dr.Read
Try
InsertRowIntoDataBase()
Catch ex As SqlClient.SqlException
LogDataBaseErrorToFile(ex)
End Try
End While
、データとの可能性のある問題が知られている場合(例えば、整数が期待されているCSVの文字列)それだけで使用するよりも、それをチェックすると良いでしょうこれらの行に沿った例外メカニズムです。
While dr.Read
Try
If Not IsRowValid() Then
LogInvalidDataToFile()
Continue While
End If
InsertRowIntoDataBase()
Catch ex As SqlClient.SqlException
LogDataBaseErrorToFile()
Catch ex As Exception
LogGenericErrorToFile()
End Try
End While
なぜ* catching *例外があなたのプログラムを終了するのですか?いくつかのコードを提供していただけますか? – Markus
okここに例があります:while(file.readnextrecord)db catchの例外ログをファイルに書き込もう...今度は例外が見つかったキャッチでループを再開したい...それがクリアであることを希望します – James
Pleaseサンプルコードで質問を更新してください。 – SWeko