現在オフラインです。再接続するためにインターネットの接続を待っています

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

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:315965
概要
この資料は、構造化例外処理の Visual Basic での使用方法を示します。NET または 2005 年の Visual Basic。

back to the top

要件

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

構造化例外処理

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ステートメントを指定することもできます。

back to the top

例外をキャッチします。

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

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

ここでは複数のCatchステートメントを使用して異なるエラーを処理する方法について説明します。
  1. 前のセクションで作成したコンソール アプリケーション プロジェクトを開きます。
  2. Sub Mainプロシージャで、前のセクションを次のコードをコピーしたコードを置き換えます。
    Dim a As Integer = 2147483647Dim b As Integer = 0Dim c As Integer = 0Try  a += 1Catch 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 ExceptionConsole.WriteLine("Error: " & exc.Message)					
  6. ファイル] メニューの [ソリューションを閉じる] をクリックします。
back to the top

例外をスローします。

構造化例外処理は、例外をキャッチするのに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 IntegerPublic 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 SetEnd Property						
    このコードは、 Ageプロパティを作成します。人の負の年齢を持つことはできませんので、クラスのユーザー数に 0 未満の有効期間を設定すると、エラーが発生します。
  6. Module1.vb のSub Mainプロシージャで、次のコードを追加します。
    Dim p As New clsPerson()Try  p.Age = -1Catch exc As Exception  Console.WriteLine(exc.Message)Finally  Console.ReadLine()End Try					
  7. [デバッグ] メニューのアプリケーションを実行する開始をクリックします。[ コンソール ] ウィンドウには、次のエラー メッセージが表示されます。
    Age cannot be negative						
  8. コンソール ウィンドウを閉じます。
back to the top

完全なコード リスト

例外をキャッチします。

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 SubEnd Module				
back to the top

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

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 SubEnd Module				
back to the top

例外をスローします。

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 SubEnd ModulePublic 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 PropertyEnd Class				
back to the top

参照

詳細についてには、次のマイクロソフト 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)

back to the top

警告: この記事は自動翻訳されています

プロパティ

文書番号:315965 - 最終更新日: 06/15/2012 08:32:00 - リビジョン: 5.0

  • kbhowtomaster kbvs2005applies kbvs2005swept kbmt KB315965 KbMtja
フィードバック