NullReferenceException クラス

定義

null オブジェクト参照を逆参照しようとした場合にスローされる例外。The exception that is thrown when there is an attempt to dereference a null object reference.

public ref class NullReferenceException : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class NullReferenceException : SystemException
type NullReferenceException = class
    inherit SystemException
Public Class NullReferenceException
Inherits SystemException
継承
NullReferenceException
属性

注釈

例外NullReferenceExceptionは、値がnullである型のメンバーにアクセスしようとした場合にスローされます。A NullReferenceException exception is thrown when you try to access a member on a type whose value is null. NullReferenceException例外は通常、開発者エラーを反映し、次のシナリオでスローされます。A NullReferenceException exception typically reflects developer error and is thrown in the following scenarios:

  • 参照型のインスタンス化を忘れました。You've forgotten to instantiate a reference type. 次の例ではnames 、が宣言されていますが、インスタンス化されていません。In the following example, names is declared but never instantiated:

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       public static void Main(string[] args)
       {
          int value = Int32.Parse(args[0]);
          List<String> names;
          if (value > 0)
             names = new List<String>();
          
          names.Add("Major Major Major");       
       }
    }
    // Compilation displays a warning like the following:
    //    Example1.cs(10) : warning BC42104: Variable //names// is used before it 
    //    has been assigned a value. A null reference exception could result 
    //    at runtime.
    //    
    //          names.Add("Major Major Major")
    //          ~~~~~
    // The example displays output like the following output:
    //    Unhandled Exception: System.NullReferenceException: Object reference 
    //    not set to an instance of an object.
    //       at Example.Main()
    
    Imports System.Collections.Generic
    
    Module Example
       Public Sub Main()
          Dim names As List(Of String)
          names.Add("Major Major Major")       
       End Sub
    End Module
    ' Compilation displays a warning like the following:
    '    Example1.vb(10) : warning BC42104: Variable 'names' is used before it 
    '    has been assigned a value. A null reference exception could result 
    '    at runtime.
    '    
    '          names.Add("Major Major Major")
    '          ~~~~~
    ' The example displays output like the following output:
    '    Unhandled Exception: System.NullReferenceException: Object reference 
    '    not set to an instance of an object.
    '       at Example.Main()
    

    コンパイラによっては、このコードをコンパイルするときに警告が発行される場合があります。Some compilers issue a warning when they compile this code. 他のユーザーがエラーを発行すると、コンパイルは失敗します。Others issue an error, and the compilation fails. この問題に対処するには、オブジェクトをインスタンス化して、 nullその値がなくなるようにします。To address this problem, instantiate the object so that its value is no longer null. 次の例では、型のクラスコンストラクターを呼び出すことによってこれを行います。The following example does this by calling a type's class constructor.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       public static void Main()
       {
          List<String> names = new List<String>();
          names.Add("Major Major Major");
       }
    }
    
    Imports System.Collections.Generic
    
    Module Example
       Public Sub Main()
          Dim names As New List(Of String)()
          names.Add("Major Major Major")       
       End Sub
    End Module
    
  • 配列を初期化する前に、その次元を忘れています。You've forgotten to dimension an array before initializing it. 次の例ではvalues 、が整数配列として宣言されていますが、それに含まれる要素の数が指定されていません。In the following example, values is declared to be an integer array, but the number of elements that it contains is never specified. その値を初期化しようとすると、 NullReferenceException例外がスローされました。The attempt to initialize its values therefore thrown a NullReferenceException exception.

    using System;
    
    public class Example
    {
       public static void Main()
       {
           int[] values = null;
           for (int ctr = 0; ctr <= 9; ctr++)
              values[ctr] = ctr * 2;
              
           foreach (var value in values)
              Console.WriteLine(value);   
       }
    }
    // The example displays the following output:
    //    Unhandled Exception: 
    //       System.NullReferenceException: Object reference not set to an instance of an object.
    //       at Example.Main()
    
    Module Example
       Public Sub Main()
           Dim values() As Integer
           For ctr As Integer = 0 To 9
              values(ctr) = ctr * 2
           Next
              
           For Each value In values
              Console.WriteLine(value)
           Next      
       End Sub
    End Module
    ' The example displays the following output:
    '    Unhandled Exception: 
    '       System.NullReferenceException: Object reference not set to an instance of an object.
    '       at Example.Main()
    

    次の例に示すように、配列内の要素の数を初期化する前に宣言することにより、例外を除去できます。You can eliminate the exception by declaring the number of elements in the array before initializing it, as the following example does.

    using System;
    
    public class Example
    {
       public static void Main()
       {
           int[] values = new int[10];
           for (int ctr = 0; ctr <= 9; ctr++)
              values[ctr] = ctr * 2;
              
           foreach (var value in values)
              Console.WriteLine(value);   
       }
    }
    // The example displays the following output:
    //    0
    //    2
    //    4
    //    6
    //    8
    //    10
    //    12
    //    14
    //    16
    //    18
    
    Module Example
       Public Sub Main()
           Dim values(9) As Integer
           For ctr As Integer = 0 To 9
              values(ctr) = ctr * 2
           Next
              
           For Each value In values
              Console.WriteLine(value)
           Next      
       End Sub
    End Module
    ' The example displays the following output:
    '    0
    '    2
    '    4
    '    6
    '    8
    '    10
    '    12
    '    14
    '    16
    '    18
    

    配列の宣言と初期化の詳細については、 配列と配列」を参照してください。For more information on declaring and initializing arrays, see Arrays and Arrays.

  • メソッドからnullの戻り値を取得し、返された型に対してメソッドを呼び出します。You get a null return value from a method, and then call a method on the returned type. これは、ドキュメントエラーの結果である可能性があります。このドキュメントでは、メソッドの呼び出しが返すnullことができることに注意してください。This sometimes is the result of a documentation error; the documentation fails to note that a method call can return null. それ以外の場合、コードでは、メソッドが常にnull以外の値を返すと想定しています。In other cases, your code erroneously assumes that the method will always return a non-null value.

    次の例のコードは、メソッドがArray.Find検索文字列にPerson一致するFirstNameフィールドを持つオブジェクトを常に返すことを前提としています。The code in the following example assumes that the Array.Find method always returns Person object whose FirstName field matches a search string. 一致するものがないため、ランタイムは例外NullReferenceExceptionをスローします。Because there is no match, the runtime throws a NullReferenceException exception.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          Person[] persons = Person.AddRange( new String[] { "Abigail", "Abra", 
                                              "Abraham", "Adrian", "Ariella", 
                                              "Arnold", "Aston", "Astor" } );    
          String nameToFind = "Robert";
          Person found = Array.Find(persons, p => p.FirstName == nameToFind);
          Console.WriteLine(found.FirstName);
       }
    }
    
    public class Person
    {
       public static Person[] AddRange(String[] firstNames) 
       {
          Person[] p = new Person[firstNames.Length];
          for (int ctr = 0; ctr < firstNames.Length; ctr++)
             p[ctr] = new Person(firstNames[ctr]);
    
          return p;
       }
       
       public Person(String firstName)
       {
          this.FirstName = firstName;
       } 
       
       public String FirstName;
    }
    // The example displays the following output:
    //       Unhandled Exception: System.NullReferenceException: 
    //       Object reference not set to an instance of an object.
    //          at Example.Main()
    
    Module Example
       Public Sub Main()
          Dim persons() As Person = Person.AddRange( { "Abigail", "Abra",
                                                       "Abraham", "Adrian",
                                                       "Ariella", "Arnold", 
                                                       "Aston", "Astor" } )    
          Dim nameToFind As String = "Robert"
          Dim found As Person = Array.Find(persons, Function(p) p.FirstName = nameToFind)
          Console.WriteLine(found.FirstName)
       End Sub
    End Module
    
    Public Class Person
       Public Shared Function AddRange(firstNames() As String) As Person()
          Dim p(firstNames.Length - 1) As Person
          For ctr As Integer = 0 To firstNames.Length - 1
             p(ctr) = New Person(firstNames(ctr))
          Next   
          Return p
       End Function
       
       Public Sub New(firstName As String)
          Me.FirstName = firstName
       End Sub 
       
       Public FirstName As String
    End Class
    ' The example displays the following output:
    '       Unhandled Exception: System.NullReferenceException: 
    '       Object reference not set to an instance of an object.
    '          at Example.Main()
    

    この問題に対処するには、次の例に示すように、メソッドnullの戻り値をテストして、そのメンバーが呼び出される前にメソッドが使用されていないことを確認します。To address this problem, test the method's return value to ensure that it is not null before calling any of its members, as the following example does.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          Person[] persons = Person.AddRange( new String[] { "Abigail", "Abra", 
                                              "Abraham", "Adrian", "Ariella", 
                                              "Arnold", "Aston", "Astor" } );    
          String nameToFind = "Robert";
          Person found = Array.Find(persons, p => p.FirstName == nameToFind);
          if (found != null)
             Console.WriteLine(found.FirstName);
          else
             Console.WriteLine("{0} not found.", nameToFind);   
       }
    }
    
    public class Person
    {
       public static Person[] AddRange(String[] firstNames) 
       {
          Person[] p = new Person[firstNames.Length];
          for (int ctr = 0; ctr < firstNames.Length; ctr++)
             p[ctr] = new Person(firstNames[ctr]);
    
          return p;
       }
       
       public Person(String firstName)
       {
          this.FirstName = firstName;
       } 
       
       public String FirstName;
    }
    // The example displays the following output:
    //        Robert not found
    
    Module Example
       Public Sub Main()
          Dim persons() As Person = Person.AddRange( { "Abigail", "Abra",
                                                       "Abraham", "Adrian",
                                                       "Ariella", "Arnold", 
                                                       "Aston", "Astor" } )    
          Dim nameToFind As String = "Robert"
          Dim found As Person = Array.Find(persons, Function(p) p.FirstName = nameToFind)
          If found IsNot Nothing Then
             Console.WriteLine(found.FirstName)
          Else
             Console.WriteLine("{0} not found.", nameToFind)
          End If   
       End Sub
    End Module
    
    Public Class Person
       Public Shared Function AddRange(firstNames() As String) As Person()
          Dim p(firstNames.Length - 1) As Person
          For ctr As Integer = 0 To firstNames.Length - 1
             p(ctr) = New Person(firstNames(ctr))
          Next   
          Return p
       End Function
       
       Public Sub New(firstName As String)
          Me.FirstName = firstName
       End Sub 
       
       Public FirstName As String
    End Class
    ' The example displays the following output:
    '       Robert not found
    
  • 式を使用しています (たとえば、メソッドまたはプロパティのリストを連結して値を取得している場合)。値がnullであるかどうかを確認しても、ランタイムは引き続き例外をNullReferenceExceptionスローします。You're using an expression (for example, you're chaining a list of methods or properties together) to retrieve a value and, although you're checking whether the value is null, the runtime still throws a NullReferenceException exception. このエラーは、式の中間値の1つがをnull返すために発生します。This occurs because one of the intermediate values in the expression returns null. その結果、のnullテストは評価されません。As a result, your test for null is never evaluated.

    次の例ではPages 、オブジェクトによってPage提供される web ページに関する情報をキャッシュするオブジェクトを定義します。The following example defines a Pages object that caches information about web pages, which are presented by Page objects. メソッドExample.Mainは、現在の web ページに null 以外のタイトルがあるかどうかを確認し、存在する場合はタイトルを表示します。The Example.Main method checks whether the current web page has a non-null title and, if it does, displays the title. ただし、このチェックにかかわらず、メソッドはNullReferenceException例外をスローします。Despite this check, however, the method throws a NullReferenceException exception.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          var pages = new Pages();
          if (! String.IsNullOrEmpty(pages.CurrentPage.Title)) {
             String title = pages.CurrentPage.Title;
             Console.WriteLine("Current title: '{0}'", title);
          }
       }
    }
    
    public class Pages 
    {
       Page[] page = new Page[10];
       int ctr = 0;
       
       public Page CurrentPage
       {
          get { return page[ctr]; }
          set {
             // Move all the page objects down to accommodate the new one.
             if (ctr > page.GetUpperBound(0)) {
                for (int ndx = 1; ndx <= page.GetUpperBound(0); ndx++)
                   page[ndx - 1] = page[ndx];
             }    
             page[ctr] = value;
             if (ctr < page.GetUpperBound(0))
                ctr++; 
          }
       }
       
       public Page PreviousPage
       {
          get {
             if (ctr == 0) { 
                if (page[0] == null)
                   return null;
                else
                   return page[0];
             }
             else {
                ctr--;
                return page[ctr + 1];
             }
          }
       }         
    }
    
    public class Page
    {
       public Uri URL;
       public String Title;
    }
    // The example displays the following output:
    //    Unhandled Exception: 
    //       System.NullReferenceException: Object reference not set to an instance of an object.
    //       at Example.Main()
    
    Module Example
       Public Sub Main()
          Dim pages As New Pages()
          Dim title As String = pages.CurrentPage.Title
       End Sub
    End Module
    
    Public Class Pages 
       Dim page(9) As Page
       Dim ctr As Integer = 0
       
       Public Property CurrentPage As Page
          Get
             Return page(ctr)
          End Get
          Set
             ' Move all the page objects down to accommodate the new one.
             If ctr > page.GetUpperBound(0) Then
                For ndx As Integer = 1 To page.GetUpperBound(0)
                   page(ndx - 1) = page(ndx)
                Next
             End If    
             page(ctr) = value
             If ctr < page.GetUpperBound(0) Then ctr += 1 
          End Set
       End Property
       
       Public ReadOnly Property PreviousPage As Page
          Get
             If ctr = 0 Then 
                If page(0) Is Nothing Then
                   Return Nothing
                Else
                   Return page(0)
                End If   
             Else
                ctr -= 1
                Return page(ctr + 1)
             End If
          End Get
       End Property         
    End Class
    
    Public Class Page
       Public URL As Uri
       Public Title As String
    End Class
    ' The example displays the following output:
    '    Unhandled Exception: 
    '       System.NullReferenceException: Object reference not set to an instance of an object.
    '       at Example.Main()
    

    ページ情報がキャッシュにpages.CurrentPage格納nullされていない場合は、がを返すため、例外がスローされます。The exception is thrown because pages.CurrentPage returns null if no page information is stored in the cache. この例外を修正するには、次の例CurrentPageに示すように、 Page現在のTitleオブジェクトのプロパティを取得する前にプロパティの値をテストします。This exception can be corrected by testing the value of the CurrentPage property before retrieving the current Page object's Title property, as the following example does:

    using System;
    
    public class Example
    {
       public static void Main()
       {
          var pages = new Pages();
          Page current = pages.CurrentPage;
          if (current != null) {  
             String title = current.Title;
             Console.WriteLine("Current title: '{0}'", title);
          }
          else {
             Console.WriteLine("There is no page information in the cache.");
          }   
       }
    }
    // The example displays the following output:
    //       There is no page information in the cache.
    
    Module Example
       Public Sub Main()
          Dim pages As New Pages()
          Dim current As Page = pages.CurrentPage
          If current IsNot Nothing Then 
             Dim title As String = current.Title
             Console.WriteLine("Current title: '{0}'", title)
          Else
             Console.WriteLine("There is no page information in the cache.")
          End If   
       End Sub
    End Module
    ' The example displays the following output:
    '       There is no page information in the cache.
    
  • 参照型を含む配列の要素を列挙しているときに、いずれかの要素を処理しようとするNullReferenceExceptionと、例外がスローされます。You're enumerating the elements of an array that contains reference types, and your attempt to process one of the elements throws a NullReferenceException exception.

    次の例では、文字列配列を定義します。The following example defines a string array. ステートメントforは、配列内の要素を列挙し、文字列をTrim表示する前に各文字列のメソッドを呼び出します。A for statement enumerates the elements in the array and calls each string's Trim method before displaying the string.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          String[] values = { "one", null, "two" };
          for (int ctr = 0; ctr <= values.GetUpperBound(0); ctr++)
             Console.Write("{0}{1}", values[ctr].Trim(), 
                           ctr == values.GetUpperBound(0) ? "" : ", "); 
          Console.WriteLine();
       }
    }
    // The example displays the following output:
    //    Unhandled Exception: 
    //       System.NullReferenceException: Object reference not set to an instance of an object.
    //       at Example.Main()
    
    Module Example
       Public Sub Main()
          Dim values() As String = { "one", Nothing, "two" }
          For ctr As Integer = 0 To values.GetUpperBound(0)
             Console.Write("{0}{1}", values(ctr).Trim(), 
                           If(ctr = values.GetUpperBound(0), "", ", ")) 
          Next
          Console.WriteLine()
       End Sub
    End Module
    ' The example displays the following output:
    '    Unhandled Exception: System.NullReferenceException: 
    '       Object reference not set to an instance of an object.
    '       at Example.Main()
    

    この例外は、配列の各要素に null 以外の値を格納する必要があり、配列要素の値が実際nullにはであると想定した場合に発生します。This exception occurs if you assume that each element of the array must contain a non-null value, and the value of the array element is in fact null. 次の例に示すように、要素がそのnull要素に対して操作を実行する前に実行されるかどうかをテストすることで、例外を排除できます。The exception can be eliminated by testing whether the element is null before performing any operation on that element, as the following example shows.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          String[] values = { "one", null, "two" };
          for (int ctr = 0; ctr <= values.GetUpperBound(0); ctr++)
             Console.Write("{0}{1}", 
                           values[ctr] != null ? values[ctr].Trim() : "", 
                           ctr == values.GetUpperBound(0) ? "" : ", "); 
          Console.WriteLine();
       }
    }
    // The example displays the following output:
    //       one, , two
    
    Module Example
       Public Sub Main()
          Dim values() As String = { "one", Nothing, "two" }
          For ctr As Integer = 0 To values.GetUpperBound(0)
             Console.Write("{0}{1}", 
                           If(values(ctr) IsNot Nothing, values(ctr).Trim(), ""), 
                           If(ctr = values.GetUpperBound(0), "", ", ")) 
          Next
          Console.WriteLine()
       End Sub
    End Module
    ' The example displays the following output:
    '       one, , two
    
  • NullReferenceException 渡さnullれたメソッドによって例外がスローされた場合。A NullReferenceException exception is thrown by a method that is passed null. メソッドによっては、渡される引数が検証されます。Some methods validate the arguments that are passed to them. これらが実行され、いずれかのnull引数がの場合、 System.ArgumentNullExceptionメソッドは例外をスローします。If they do and one of the arguments is null, the method throws an System.ArgumentNullException exception. それ以外の場合はNullReferenceException 、例外をスローします。Otherwise, it throws a NullReferenceException exception. 次の例は、このシナリオを示しています。The following example illustrates this scenario.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       public static void Main()
       {
          List<String> names = GetData();
          PopulateNames(names);
       }
    
       private static void PopulateNames(List<String> names)
       {
          String[] arrNames = { "Dakota", "Samuel", "Nikita",
                                "Koani", "Saya", "Yiska", "Yumaevsky" };
          foreach (var arrName in arrNames)
             names.Add(arrName);
       }
       
       private static List<String> GetData() 
       {
          return null;   
       
       }
    }
    // The example displays output like the following:
    //    Unhandled Exception: System.NullReferenceException: Object reference 
    //    not set to an instance of an object.
    //       at Example.PopulateNames(List`1 names)
    //       at Example.Main()
    
    Imports System.Collections.Generic
    
    Module Example
       Public Sub Main()
          Dim names As List(Of String) = GetData()
          PopulateNames(names)
       End Sub
       
       Private Sub PopulateNames(names As List(Of String))
          Dim arrNames() As String = { "Dakota", "Samuel", "Nikita",
                                       "Koani", "Saya", "Yiska", "Yumaevsky" }
          For Each arrName In arrNames
             names.Add(arrName)
          Next
       End Sub
       
       Private Function GetData() As List(Of String)
          Return Nothing   
       End Function
    End Module
    ' The example displays output like the following:
    '    Unhandled Exception: System.NullReferenceException: Object reference 
    '    not set to an instance of an object.
    '       at Example.PopulateNames(List`1 names)
    '       at Example.Main()
    

    この問題に対処するには、メソッドに渡された引数がでnullはないこと、またはスローさtry…catch…finallyれた例外をブロックで処理していることを確認します。To address this issue, make sure that the argument passed to the method is not null, or handle the thrown exception in a try…catch…finally block. 詳細については、「 例外で定義されているインターフェイスのプライベート C++ 固有の実装です。For more information, see Exceptions.

次の Microsoft 中間言語 (MSIL) 命令でNullReferenceExceptioncallvirt ldelem.<type> cpblk initblk cpobj ldfld 、、ldflda、、 ldind.<type> 、、、、、がスローされます。 ldelema``ldlen 、、stfld、 、、unbox、および。throw stelem.<type> stind.<type>The following Microsoft intermediate language (MSIL) instructions throw NullReferenceException: callvirt, cpblk, cpobj, initblk, ldelem.<type>, ldelema, ldfld, ldflda, ldind.<type>, ldlen, stelem.<type>, stfld, stind.<type>, throw, and unbox.

NullReferenceExceptionでは、0x80004003 という値を持つ HRESULT COR_E_NULLREFERENCE が使用されます。NullReferenceException uses the HRESULT COR_E_NULLREFERENCE, which has the value 0x80004003.

NullReferenceExceptionインスタンスの初期プロパティ値の一覧については、NullReferenceExceptionコンストラクターを参照してください。For a list of initial property values for an instance of NullReferenceException, see the NullReferenceException constructors.

リリースコードでの NullReferenceException の処理Handling NullReferenceException in release code

通常は、発生後に処理するよりも NullReferenceException を回避することをお勧めします。It's usually better to avoid a NullReferenceException than to handle it after it occurs. 例外の処理によって、コードは管理や理解が難しくなることがあるうえ、他のバグが生じることも考えられます。Handling an exception can make your code harder to maintain and understand, and can sometimes introduce other bugs. NullReferenceException は多くの場合、回復不能なエラーです。A NullReferenceException is often a non-recoverable error. こうした場合、例外によってアプリを停止させることが最良の代替策である可能性があります。In these cases, letting the exception stop the app might be the best alternative.

ただし、次のように、エラーの処理が有用である状況は多く存在します。However, there are many situations where handling the error can be useful:

  • アプリは null であるオブジェクトを無視できます。Your app can ignore objects that are null. たとえば、アプリがデータベース内のレコードを取得して処理する場合、結果として null オブジェクトである、いくつかの不良レコードを無視できる可能性があります。For example, if your app retrieves and processes records in a database, you might be able to ignore some number of bad records that result in null objects. 必要な処理は、ログ ファイルまたはアプリケーションの UI に不良データを記録することだけであることが考えられます。Recording the bad data in a log file or in the application UI might be all you have to do.

  • 例外から回復することができます。You can recover from the exception. たとえば、参照型を返す Web サービスの呼び出しは、接続が失われた場合や接続がタイムアウトした場合には、null を返す可能性があります。接続を再確立し、呼び出しを再度試すことができます。For example, a call to a web service that returns a reference type might return null if the connection is lost or the connection times out. You can attempt to reestablish the connection and try the call again.

  • アプリの状態を有効な状態に復元できます。You can restore the state of your app to a valid state. たとえば、NullReferenceException をスローするメソッドを呼び出す前に、情報をデータ ストアに保存する必要がある、複数手順のタスクを実行していることがあります。For example, you might be performing a multi-step task that requires you to save information to a data store before you call a method that throws a NullReferenceException. 初期化されていないオブジェクトがデータ レコードを破損する可能性がある場合、アプリを終了する前に過去のデータを削除できます。If the uninitialized object would corrupt the data record, you can remove the previous data before you close the app.

  • 例外の報告が推奨されます。You want to report the exception. たとえば、エラーがアプリのユーザーによる間違いに起因する場合、メッセージを生成して、ユーザーが正しい情報を入力するのを支援できます。For example, if the error was caused by a mistake from the user of your app, you can generate a message to help him supply the correct information. 問題の解決に役立てるために、エラーに関する情報をログに記録することもできます。You can also log information about the error to help you fix the problem. ASP.NET などのいくつかのフレームワークには、アプリのクラッシュを防止するために、すべてのエラーをキャプチャする上位レベルの例外ハンドラーが用意されています。このハンドラーを使用した場合、例外をログに記録することが、その例外が発生したことを知る唯一の方法になる可能性があります。Some frameworks, like ASP.NET, have a high-level exception handler that captures all errors to that the app never crashes; in that case, logging the exception might be the only way you can know that it occurs.

コンストラクター

NullReferenceException()

NullReferenceException クラスの新しいインスタンスを初期化し、その Message プロパティの値として、"オブジェクトのインスタンスを指定する必要がある部分に null 値が指定されています" などのシステム提供のエラーを指定します。Initializes a new instance of the NullReferenceException class, setting the Message property of the new instance to a system-supplied message that describes the error, such as "The value 'null' was found where an instance of an object was required." このメッセージには、現在のシステムのカルチャが考慮されます。This message takes into account the current system culture.

NullReferenceException(SerializationInfo, StreamingContext)

シリアル化したデータを使用して、NullReferenceException クラスの新しいインスタンスを初期化します。Initializes a new instance of the NullReferenceException class with serialized data.

NullReferenceException(String)

指定したエラー メッセージを使用して、NullReferenceException クラスの新しいインスタンスを初期化します。Initializes a new instance of the NullReferenceException class with a specified error message.

NullReferenceException(String, Exception)

指定したエラー メッセージおよびこの例外の原因となった内部例外への参照を使用して、NullReferenceException クラスの新しいインスタンスを初期化します。Initializes a new instance of the NullReferenceException class with a specified error message and a reference to the inner exception that is the cause of this exception.

プロパティ

Data

例外に関する追加のユーザー定義情報を提供する、キー/値ペアのコレクションを取得します。Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(継承元 Exception)
HelpLink

この例外に関連付けられているヘルプ ファイルへのリンクを取得または設定します。Gets or sets a link to the help file associated with this exception.

(継承元 Exception)
HResult

特定の例外に割り当てられているコード化数値である HRESULT を取得または設定します。Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(継承元 Exception)
InnerException

現在の例外の原因となる Exception インスタンスを取得します。Gets the Exception instance that caused the current exception.

(継承元 Exception)
Message

現在の例外を説明するメッセージを取得します。Gets a message that describes the current exception.

(継承元 Exception)
Source

エラーの原因となるアプリケーションまたはオブジェクトの名前を取得または設定します。Gets or sets the name of the application or the object that causes the error.

(継承元 Exception)
StackTrace

呼び出し履歴で直前のフレームの文字列形式を取得します。Gets a string representation of the immediate frames on the call stack.

(継承元 Exception)
TargetSite

現在の例外がスローされたメソッドを取得します。Gets the method that throws the current exception.

(継承元 Exception)

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetBaseException()

派生クラスでオーバーライドされた場合、それ以後に発生する 1 つ以上の例外の主要な原因である Exception を返します。When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(継承元 Exception)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetObjectData(SerializationInfo, StreamingContext)

派生クラスでオーバーライドされた場合は、その例外に関する情報を使用して SerializationInfo を設定します。When overridden in a derived class, sets the SerializationInfo with information about the exception.

(継承元 Exception)
GetType()

現在のインスタンスのランタイム型を取得します。Gets the runtime type of the current instance.

(継承元 Exception)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在の例外の文字列形式を作成して返します。Creates and returns a string representation of the current exception.

(継承元 Exception)

イベント

SerializeObjectState

例外がシリアル化され、例外に関するシリアル化されたデータを含む例外状態オブジェクトが作成されたときに発生します。Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(継承元 Exception)

適用対象

こちらもご覧ください