0

レポート用に 10 の異なるデータベースにアクセスする vb.net プログラムがあります。プログラムの最後に「Try」ステートメントを使用して、LINQ で構築したデータをデータセットから電子メールで送信しています。

私が直面している問題は、オフラインのデータベースに接続しようとしたとき、またはプログラムがロックアップまたは終了したときにタイムアウトになることです。私がやりたいのは、「On error resume Next」に似たものですが、既にプログラムに含まれている try ステートメントでは実行できません... 何か提案はありますか?

4

4 に答える 4

3

エラーが発生した場合、vb.net の下で次に再開します。

    Try
        something()
    Catch ex As Exception
        'do nothing
    End Try

これが長期コード/生産コードである場合、これを処理するより良い方法を見つけてみてください

于 2013-04-16T13:31:51.983 に答える
0

Fredou の答えは技術的には正しいですが、プログラムを少し再構築することをお勧めします。それ以外の

On Error Resume Next
Dim db1 = OpenDbConnection()        ' fails
...do something with db1...         ' more errors, failing silently, occur here

データベースを開く操作のみが失敗できるようにします。

Dim db1 As OleDbConnection          ' or whatever DB library you happen to use
Try
    db1 = OpenDbConnection()
Catch ex As Exception
    Console.WriteLine("Skipping DB1: " & ex.ToString())
End Try

If db1 IsNot Nothing
    ...do something with db1...     ' Errors occuring here *are* reported
End If

そうすれば、コードの明確に定義された特定の部分のエラーのみを無視できます。

于 2013-04-16T13:46:46.737 に答える
0

stackoverflow でこの回答を確認してください。それはC#にありますが

C# で例外を無視する

基本的にトップレベルで例外を扱う式です。

ただし、例外は構造化されているため、考えられる各コード ブロックを必ずラップする必要があります。

于 2013-04-16T13:37:49.047 に答える
0

成功したかどうかでブール値を返す別の関数からデータベースを呼び出します。このようなもの:

Protected Sub Page_Load(sender As Object, e As EventArgs)
Try
            'do something or nothing
    If Not OpenConnecttion() Then
    End If
Catch generatedExceptionName As Exception

    Throw
End Try

サブ終了

Private Function OpenConnecttion() As Boolean
        'do you database conenction and maybe retrieval stuff here
Try
Catch ex As Exception
    Return False
End Try
Return True
End Function
于 2013-04-16T13:37:59.047 に答える