0

3 つの入力テキスト ボックスがある学生コース登録用のフォームを作成しました。

  • 名前と苗字
  • 電話番号
  • 住所

次に、学生情報を表示するために使用する別のテキスト ボックスを作成します。この表示専用のテキスト ボックスを「コース」テキスト ボックスと呼びます。

Tryこのフォームで構造化例外処理 ( /Catchブロック)を利用したいと考えています。この種のフォームでそれを行うにはどうすればよいですか。

4

2 に答える 2

4

Try/Catch による例外処理

VB.Net での例外処理は非常に簡単です。次のコードは、try/catch ブロックの構造です。

 Try
       'This is the code you wish to try that  might give an error.
    Catch ex As Exception
       'This is where you end up if an error occurs.
    End Try

フォームにボタンがあり、ボタンが押された後、すべての指示が適切にエラー処理されることを確認したいとしましょう。次のコードで説明します。最初にボタンをドロップし、ValidationButton という名前を付けます。新しいボタンをダブルクリックすると、コード ビハインドにクリック イベントを処理する新しい関数が表示されます。以下に示すように、try catch ブロックを追加します。

Private Sub ValidationButton_Click(sender As System.Object, e As System.EventArgs) Handles ValidationButton.Click
    Try

    Catch ex As Exception

    End Try
End Sub

ページにはボタンがあり、その中のコードは try/catch ブロックにあります。必要なコードを内部に配置するだけです。スローしてエラーになるものを入れて、そのエラーを表示します。

サンプルコード

Private Sub ValidationButton_Click(sender As System.Object, e As System.EventArgs) Handles ValidationButton.Click
    Try
        Dim x As Integer = 1
        Dim y As Integer = 0
        Dim z As Integer = x / y
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

「算術演算でオーバーフローが発生しました」というエラーが発生したことを知らせるメッセージ ボックスがポップアップ表示されます。これはもちろん、ゼロで割ることができないためです。これを try catch に配置していないと、プログラムがクラッシュしていました。

したがって、この情報を使用して、エラーが発生する可能性のある場所に try/catch を配置してください。エラーの原因がわかっている場合は、別のことを行うコードをそこに含めることもできます。この例では、ゼロで割らないようにユーザーに伝えたい場合があります。

于 2013-02-19T15:08:17.827 に答える
2

特定のコード行のエラーをキャッチするだけでなく、未処理のエラーをキャッチすることもできます。これは、メイン プロシージャからアプリケーションを起動することで最も簡単に実行できます。

Module Program

    Public Shared Sub Main()
        AddHandler Application.ThreadException, AddressOf UIThreadException

        ' Force all Windows Forms errors to go through our handler.
        Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)

        ' Start the main Form
        Application.Run(New frmMain())
    End Sub

    Private Shared Sub UIThreadException(ByVal sender As Object, _
                                         ByVal t As ThreadExceptionEventArgs)
        ' Handle the error here
    End Sub

End Module

この件については、MSDN で詳しく読むことができます: Application.ThreadException Event

于 2013-02-19T15:36:53.797 に答える