チュートリアル : 構造化例外処理
更新 : 2007 年 11 月
非構造化例外処理を行う場合は、従来と同様に On Error ステートメントを使用してコードの例外を処理できます。一方、Visual Basic 2005 では構造化例外処理もサポートされています。構造化例外処理を使用すると、包括的な例外処理を備えたプログラムの作成や、管理を行うことができます。構造化例外処理では、コード ブロックが特定の状況をテストし、適切な処理を行います。
このチュートリアルでは、構造化例外処理をプログラムに追加する方法を示します。特に、Try...Catch...Finally ステートメントを使用して例外を処理する方法、および Catch ブロック内でエラーをフィルタ処理する方法について示します。
メモ : |
---|
構造化例外処理と非構造化例外処理を 1 つのプロシージャの中で組み合わせて使用することはできません。 |
メモ : |
---|
使用している設定またはエディションによっては、ヘルプの記載と異なるダイアログ ボックスやメニュー コマンドが表示される場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
アプリケーションの作成
次のアプリケーションは、テディ ベアを販売する会社の顧客注文フォームです。ユーザー インターフェイスは、次のコントロールから構成されています。
顧客の名前用の TextBox が 1 つ。
テディベアの色とサイズを選択するための ComboBox コントロールが 2 つ。
注文用の Button が 1 つ。
各コントロールの目的をユーザーに伝えるラベルが 3 つ。
ユーザーが必要な情報を入力して [Order] ボタンをクリックすると、このアプリケーションは注文の概要を表示します。
アプリケーションを作成するには
[ファイル] メニューの [新しいプロジェクト] をクリックします。[新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] ウィンドウの、[Visual Basic]、[Windows] を選択し (まだこれらが選択されていない場合)、[テンプレート] ウィンドウで [Windows アプリケーション] をクリックします。
[プロパティ] ウィンドウで、[プロジェクト名] に「TeddyBearProject」と入力し、[OK] をクリックします。プロジェクトがソリューション エクスプローラに追加され、Windows フォーム デザイナが表示されます。
コントロールをフォームに追加し、指定されたとおりにプロパティを設定します。
コントロール
プロパティ
プロパティ値
Label
名前
テキスト
customerLabel
Bear Order Form
TextBox
名前
テキスト
customerName
Customer Name
Label
名前
テキスト
bearColorLabel
Available Colors
ComboBox
名前
項目
テキスト
bearColor
Black, Brown, Spotted
Bear Color
Label
名前
テキスト
bearSizeLabel
Available Sizes
ComboBox
名前
項目
テキスト
bearSize
Small, Normal, Large
Size
Button
名前
テキスト
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) Or _ (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)