ErrObject.Number プロパティ

定義

エラーを示す数値を取得または設定します。 読み取り/書き込みが可能です。

public:
 property int Number { int get(); void set(int value); };
public int Number { get; set; }
member this.Number : int with get, set
Public Property Number As Integer

プロパティ値

エラーを示す数値を取得または設定します。 読み取り/書き込みが可能です。

例外

Number が 65535 より大きい。

この例では、エラー処理ルーチンでの Number プロパティの一般的な使用方法を示します。

    ' Typical use of Number property.
Sub test()
  On Error GoTo out

  Dim x, y As Integer
  x = 1 / y   ' Create division by zero error.
  Exit Sub
out:
  MsgBox(Err.Number)
  MsgBox(Err.Description)
  ' Check for division by zero error.
  If Err.Number = 11 Then
      y = y + 1
  End If
  Resume Next
End Sub

この例では、Err オブジェクトの Raise メソッドを使用して、Visual Basic で記述された関数内で元のエラーを生成します。 呼び出し元の関数はエラーをキャッチし、ユーザーに報告できます。 プロシージャ CallingProcedure では、 Err オブジェクトから派生できる情報の種類と、 Exception オブジェクトから派生できる情報が比較されます。

Module Module1

    Const WidthErrorNumber As Integer = 1000
    Const WidthHelpOffset As Object = 100

    Sub Main()
        CallingProcedure()
    End Sub

    Sub TestWidth(ByVal width As Integer)
        If width > 1000 Then
            ' Replace HelpFile.hlp with the full path to an appropriate
            ' help file for the error. Notice that you add the error 
            ' number you want to use to the vbObjectError constant. 
            ' This assures that it will not conflict with a Visual
            ' Basic error.
            Err.Raise(vbObjectError + WidthErrorNumber, "ConsoleApplication1.Module1.TestWidth", 
                "Width must be less than 1000.", "HelpFile.hlp", WidthHelpOffset)
        End If
    End Sub

    Sub CallingProcedure()
        Try
            ' The error is raised in TestWidth.
            TestWidth(2000)
        Catch ex As Exception
            ' The Err object can access a number of pieces of
            ' information about the error.
            Console.WriteLine("Information available from Err object:")
            Console.WriteLine(Err.Number)
            Console.WriteLine(Err.Description)
            Console.WriteLine(Err.Source)
            Console.WriteLine(Err.HelpFile)
            Console.WriteLine(Err.HelpContext)
            Console.WriteLine(Err.GetException)

            Console.WriteLine(vbCrLf & "Information available from Exception object:")
            Console.WriteLine(ex.Message)
            Console.WriteLine(ex.ToString)

            Err.Clear()
        End Try
    End Sub
End Module

' The example produces the following output:
' Information available from Err object:
' -2147220504
' Width must be less than 1000.
' ConsoleApplication1.Module1.TestWidth
' HelpFile.hlp
' 100
' System.Exception: Width must be less than 1000.
'    at Microsoft.VisualBasic.ErrObject.Raise(Int32 Number, Object Source, Object
' Description, Object HelpFile, Object HelpContext)
'    at ConsoleApplication1.Module1.TestWidth(Int32 width) in C:\Users\example\App
' Data\Local\Temporary Projects\ConsoleApplication1\Module1.vb:line 17
'    at ConsoleApplication1.Module1.CallingProcedure() in C:\Users\example\AppData
' \Local\Temporary Projects\ConsoleApplication1\Module1.vb:line 25
'
' Information available from Exception object:
' Width must be less than 1000.
' System.Exception: Width must be less than 1000.
'    at Microsoft.VisualBasic.ErrObject.Raise(Int32 Number, Object Source, Object
' Description, Object HelpFile, Object HelpContext)
'    at ConsoleApplication1.Module1.TestWidth(Int32 width) in C:\Users\example\App
' Data\Local\Temporary Projects\ConsoleApplication1\Module1.vb:line 17
'    at ConsoleApplication1.Module1.CallingProcedure() in C:\Users\example\AppData
' \Local\Temporary Projects\ConsoleApplication1\Module1.vb:line 25

注釈

Numberを除くすべてのRaise引数は省略可能です。 省略可能な引数を省略し、 Err オブジェクトのプロパティ設定にクリアされていない値が含まれている場合、それらの値はエラーの値として機能します。

Err オブジェクトは、Error ステートメントでエラーを生成する場合よりも豊富な情報を提供するため、Raiseクラス モジュールを記述するときにエラーを生成する場合に便利です。 たとえば、 Raise メソッドでは、エラーを生成したソースを Source プロパティで指定したり、エラーのオンライン ヘルプを参照したりできます。

オブジェクトからユーザー定義エラーを返す場合は、エラー コードとして選択した番号をVbObjectError定数に追加してErr.Numberを設定します。 たとえば、1051 という番号をエラー コードとして返す場合は次のコードを使用します。

Err.Raise(Number:=vbObjectError + 1051, Source:="SomeClass")

適用対象

こちらもご覧ください