チュートリアル: 構造化例外処理 (Visual Basic)
非構造化例外処理を行う場合は、従来と同様に On Error ステートメントを使用してコードの例外を処理できます。一方、Visual Basic 2005 では構造化例外処理もサポートされています。構造化例外処理を使用すると、包括的な例外処理を備えたプログラムの作成や、管理を行うことができます。 構造化例外処理では、コード ブロックが特定の状況をテストし、適切な処理を行います。
このチュートリアルでは、構造化例外処理をプログラムに追加する方法を示します。 特に、Try...Catch...Finally ステートメントを使用して例外を処理する方法、および Catch ブロック内でエラーをフィルター処理する方法について示します。
注意
構造化例外処理と非構造化例外処理を 1 つのプロシージャの中で組み合わせて使用することはできません。
注意
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio の設定」を参照してください。
アプリケーションの作成
次のアプリケーションは、テディ ベアを販売する会社の顧客注文フォームです。 ユーザー インターフェイスは、次のコントロールから構成されています。
顧客の名前用の TextBox が 1 つ。
テディベアの色とサイズを選択するための ComboBox コントロールが 2 つ。
注文用の Button が 1 つ。
各コントロールの目的をユーザーに伝えるラベルが 3 つ。
ユーザーが必要な情報を入力して [Order] ボタンをクリックすると、このアプリケーションは注文の概要を表示します。
アプリケーションを作成するには
[ファイル] メニューの [新しいプロジェクト] をクリックします。 [新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] ウィンドウの、[Visual Basic]、[Windows] を選択し (まだこれらが選択されていない場合)、[テンプレート] ウィンドウで [Windows アプリケーション] をクリックします。
[プロパティ] ウィンドウで、[プロジェクト名] に「TeddyBearProject」と入力し、[OK] をクリックします。 プロジェクトがソリューション エクスプローラーに追加され、Windows フォーム デザイナーが表示されます。
コントロールをフォームに追加し、指定されたとおりにプロパティを設定します。
コントロール
プロパティ
プロパティ値
ラベル
[名前]
Text
customerLabel
Bear Order Form
TextBox
[名前]
Text
customerName
Customer Name
ラベル
[名前]
Text
bearColorLabel
Available Colors
ComboBox
[名前]
Items
Text
bearColor
Black, Brown, Spotted
Bear Color
ラベル
[名前]
Text
bearSizeLabel
Available Sizes
ComboBox
[名前]
Items
Text
bearSize
Small, Normal, Large
サイズ
Button
[名前]
Text
order
Order
機能の追加
コントロールとそのプロパティを追加および設定したところで、これらのコントロールを機能させるためのコードを記述する必要があります。 次のコードは、[Order] ボタンの Click イベントを処理し、顧客にメッセージを表示します。
フォームおよびコントロールに機能を追加するには
[Order] ボタンの Click イベントに次のコードを追加します。
Dim bearOrder As String bearOrder = String.Format("You have ordered a {0} {1} bear.", bearSize.SelectedItem, bearColor.SelectedItem) MsgBox(bearOrder)
この時点で、構造化例外処理コードをアプリケーションに追加できます。
Try...Catch ブロックの追加
顧客がぬいぐるみの色を必ず指定するように、Try...Catch ステートメントを追加します。 次のことに留意してください。
識別子のない Catch 句はすべての例外をキャッチします。
When 句のある Catch 句は、式が True に評価されたときだけ例外をキャッチします。式の型は Boolean に暗黙に変換できる必要があります。
単純な Try...Catch ブロックを追加するには
[Order] ボタンの Click イベントにある、サイズと色の値をテストするセクション、つまり String.Format ("You have ordered a {0} {1} bear.", BearSize.SelectedItem, BearColor.SelectedItem) の後に、次のコードを追加します。 このコードは、色の値が無効な場合に例外をスローします。 Try ステートメントを追加すると、エディターによって自動的に End Try がステートメントの最後に追加されます。
Try If bearColor.SelectedIndex < 0 OrElse bearColor.SelectedIndex > 2 Then Throw New System.Exception() End If ' The Catch statement handles errors caused by a lack of bear color. Catch ex As Exception When bearColor.SelectedIndex < 0 bearOrder = String.Format("You must select a bear color!") Finally Beep() ' Beep at the end. End Try
別の Catch 句を追加するには
新しい項目 "Purple" を bearColor コンボ ボックス コントロールに追加します。
bearOrder = String.Format("You must select a bear color!") コード行の後ろに、次のコードを追加します。
Catch ex As Exception When bearColor.SelectedIndex = 3 bearOrder = String.Format("There are no bears of that color.")
必要に応じて任意の数の Catch 句をコードに追加できます。
テスト
アプリケーションをテストして、正常に動作することを確認します。
アプリケーションをビルドして実行するには
[ビルド] メニューの [TeddyBearProject のビルド] をクリックします。
F5 キーを押してアプリケーションを実行します。 メイン フォームが表示されます。
アプリケーションをテストするには
[Customer name] ボックスに名前を入力し、[Available Colors] ボックスで色を、[Available Sizes] ボックスでサイズを選択します。
[Order] ボタンをクリックします。 前の手順で [Black]、[Brown]、または [Spotted] のいずれかの色を指定した場合は、注文したぬいぐるみのサイズと色を示すメッセージが表示されます。
色を指定しなかった場合は、色の指定を求めるメッセージが表示されます。
メッセージをキャンセルするには、[OK] をクリックします。
[Available Colors] ボックスで [Purple] を選択し、[Order] ボタンをクリックします。 紫色のテディ ベアは選択できないことを示すメッセージが表示されます。
参照
参照
On Error ステートメント (Visual Basic)
Try...Catch...Finally ステートメント (Visual Basic)