構造化例外処理の Visual Basic での使用方法NET または Visual Basic 2005

文書翻訳 文書翻訳
文書番号: 315965
すべて展開する | すべて折りたたむ

目次

概要

この資料は、構造化例外処理の Visual Basic での使用方法を示します。NET または 2005 年の Visual Basic。

要件

次の一覧は、推奨されるハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、およびサービス パックが必要です。
  • Visual Basic。NET または Visual Basic 2005
この資料では、次のトピックに精通していることを前提としています。
  • Visual Basic。NET または Visual Basic 2005
  • マイクロソフトの Visual Studio。NET またはマイクロソフトの Visual Studio 2005

構造化例外処理

Visual Basic。NET または Visual Basic 2005年以前のバージョンの Microsoft の Visual Basic で利用できる、強力なより読みやすい代わりに「On Error Goto」エラーの処理を提供する構造化例外処理を提供します。内部エラー ハンドラーと同じプロシージャ内でエラー ハンドラーをネストすることができるため、構造化例外処理はより強力です。さらに、ブロックの構文をに類似した構造化例外処理を使用する場合.その他.End Ifステートメント。Visual Basic のようになります。NET と Visual Basic 2005年コードより読み取り可能な維持し、やすくします。

: Visual Basic。NET または Visual Basic 2005年「On Error Goto」構文は、旧バージョンと互換性を保持します。Visual Basic でこの構文を使用することもできます。NET または Visual Basic 2005年のコードです。ただし、構造化例外処理とOn Errorステートメントと同じプロシージャ内を組み合わせることはできません。構造化例外処理の場合、マイクロソフトでは、使用する新しいコードを記述します。

構造化エラー処理の基本構文は次のとおりです。
Try
   'Code that may raise an error.
Catch
   'Code to handle the error.
Finally
   'Code to do any final clean up.
End Try
				
くださいし、 End Tryステートメントが必要です。それらのいずれかをコードに追加する必要がありますが、 CatchおよびFinallyステートメントは必須ではありません。各Catchブロックで特定のエラーを処理できるように複数のCatchステートメントを指定することもできます。

例外をキャッチします。

  1. Visual Studio を起動します。NET または Visual Studio 2005年。
  2. Visual Basic では、新しいコンソール アプリケーション プロジェクトを作成します。NET または 2005 年の Visual Basic。
  3. Sub Mainプロシージャで、次のコードを追加します。
    Dim a As Integer = 0
    Dim b As Integer = 0
    Dim c As Integer = 0
    
    Try
      a = b \ c
    Catch exc As Exception
      Console.WriteLine("A run-time error occurred")
    Finally
      Console.ReadLine()
    End Try
    					
  4. [デバッグ] メニューのアプリケーションを実行する開始をクリックします。コードは、数値をゼロで除算しようとします。これは、ゼロ例外によって除算を原因と無効な操作です。幸いなことに、このエラーは、 Catchブロックを検出し、[ コンソール ] ウィンドウに次のエラー メッセージが表示されます。
    A run-time error has occurred
    						
  5. コンソール ウィンドウを閉じます。

複数の例外をキャッチします。

ここでは複数のCatchステートメントを使用して異なるエラーを処理する方法について説明します。
  1. 前のセクションで作成したコンソール アプリケーション プロジェクトを開きます。
  2. Sub Mainプロシージャで、前のセクションを次のコードをコピーしたコードを置き換えます。
    Dim a As Integer = 2147483647
    Dim b As Integer = 0
    Dim c As Integer = 0
    
    Try
      a += 1
    Catch exc As DivideByZeroException
      Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
      Console.WriteLine("Error: Overflow")
    Finally
      Console.ReadLine()
    End Try
    						
    このコードには 2 つのCatchブロックが含まれています: 0 エラーによって、以前の除算をキャッチして、新しいオーバーフロー エラーをキャッチします。
  3. [デバッグ] メニューのアプリケーションを実行する開始をクリックします。[ コンソール ] ウィンドウには、次のエラー メッセージが表示されます。
    Error: Overflow
    						
  4. コンソール ウィンドウを閉じます。
  5. 常に発生する可能性がありますすべてのエラーを予測できないため、予期しない例外をすべてキャッチブロックを追加できます。たとえば、予期しないエラーをキャッチし、適切なエラー メッセージを表示するには、 Finallyステートメントの前に次のコードを追加します。
    Catch exc As Exception
    Console.WriteLine("Error: " & exc.Message)
    					
  6. ファイル] メニューの [ソリューションを閉じる] をクリックします。

例外をスローします。

構造化例外処理は、例外をキャッチするのにCatchステートメントを使用します。構造化された例外を処理する例外をスローすることができます。たとえば、ビジネス ルールに違反している場合は、エラーをスローする可能性がありますので、プロパティの Setプロシージャ内のデータの入力規則を実行するときに、例外をスローする場合に便利です。
  1. Visual Studio を起動します。NET または Visual Studio 2005年。
  2. Visual Basic では、新しいコンソール アプリケーション プロジェクトを作成します。NET または 2005 年の Visual Basic。
  3. [プロジェクト] メニューの[クラスの追加をクリックします。
  4. [新しい項目の追加] ウィンドウでを入力します。 clsPerson.vbのテキスト] ボックスに、し、[ OK] をクリックします。
  5. パブリック クラスのclsPerson、次のコードを追加してください.クラスの終了ステートメント。
    Private mintAge As Integer
    
    Public Property Age() As Integer
      Get
        Age = mintAge
      End Get
      Set(ByVal Value As Integer)
        If Value >= 0 Then
          mintAge = Value
        Else
          Throw New ArgumentException ("Age cannot be negative")
        End If
      End Set
    End Property
    						
    このコードは、 Ageプロパティを作成します。人の負の年齢を持つことはできませんので、クラスのユーザー数に 0 未満の有効期間を設定すると、エラーが発生します。
  6. Module1.vb のSub Mainプロシージャで、次のコードを追加します。
    Dim p As New clsPerson()
    
    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
    					
  7. [デバッグ] メニューのアプリケーションを実行する開始をクリックします。[ コンソール ] ウィンドウには、次のエラー メッセージが表示されます。
    Age cannot be negative
    						
  8. コンソール ウィンドウを閉じます。

完全なコード リスト

例外をキャッチします。

Module Module1

  Sub Main()
    Dim a As Integer = 0
    Dim b As Integer = 0
    Dim c As Integer = 0

    Try
      a = b \ c
    Catch exc As Exception
      Console.WriteLine("A run-time error occurred")
    Finally
      Console.ReadLine()
    End Try

  End Sub

End Module
				

複数の例外をキャッチします。

Module Module1

  Sub Main()
    Dim a As Integer = 2147483647
    Dim b As Integer = 0
    Dim c As Integer = 0

    Try
      a += 1
    Catch exc As DivideByZeroException
      Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
      Console.WriteLine("Error: Overflow")
    Catch exc As Exception
      Console.WriteLine("Error: " & exc.Message)
    Finally
      Console.ReadLine()
    End Try


  End Sub

End Module
				

例外をスローします。

Module Module1

  Sub Main()
    Dim p As New clsPerson()

    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
  End Sub

End Module

Public Class clsPerson

  Private mintAge As Integer

  Public Property Age() As Integer
    Get
      Age = mintAge
    End Get
    Set(ByVal Value As Integer)
      If Value >= 0 Then
        mintAge = Value
      Else
        Throw New ApplicationException("Age cannot be negative")
      End If
    End Set
  End Property

End Class
				

参照

詳細についてには、次のマイクロソフト Web サイトを参照してください。
エラー、VB. の処理NET の方法: 生活が例外 ( Visual Basic 開発者の記事)
.aspx の http://msdn.microsoft.com/en-us/library/aa227603 (v=vs.60)

例外をキャッチします。
.aspx の http://msdn.microsoft.com/en-us/library/ys1b32h3 (v=vs.80)

例外をスローするには
.aspx の http://msdn.microsoft.com/en-us/library/z7w9ff54 (v=vs.80)

プロパティ

文書番号: 315965 - 最終更新日: 2012年6月15日 - リビジョン: 5.0
キーワード:?
kbhowtomaster kbvs2005applies kbvs2005swept kbmt KB315965 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:315965
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com