3 つの入力テキスト ボックスがある学生コース登録用のフォームを作成しました。
- 名前と苗字
- 電話番号
- 住所
次に、学生情報を表示するために使用する別のテキスト ボックスを作成します。この表示専用のテキスト ボックスを「コース」テキスト ボックスと呼びます。
Try
このフォームで構造化例外処理 ( /Catch
ブロック)を利用したいと考えています。この種のフォームでそれを行うにはどうすればよいですか。
3 つの入力テキスト ボックスがある学生コース登録用のフォームを作成しました。
次に、学生情報を表示するために使用する別のテキスト ボックスを作成します。この表示専用のテキスト ボックスを「コース」テキスト ボックスと呼びます。
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 を配置してください。エラーの原因がわかっている場合は、別のことを行うコードをそこに含めることもできます。この例では、ゼロで割らないようにユーザーに伝えたい場合があります。
特定のコード行のエラーをキャッチするだけでなく、未処理のエラーをキャッチすることもできます。これは、メイン プロシージャからアプリケーションを起動することで最も簡単に実行できます。
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