NullReferenceException NullReferenceException NullReferenceException NullReferenceException Class

Definition

Die Ausnahme, die bei einem Versuch ausgelöst wird, einen Verweis auf ein NULL-Objekt zu dereferenzieren.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
Vererbung
NullReferenceExceptionNullReferenceExceptionNullReferenceExceptionNullReferenceException
Attribute

Hinweise

Eine NullReferenceException -Ausnahme wird ausgelöst, wenn Sie versuchen, auf einen Member für einen Typ zuzugreifen null, dessen Wert ist.A NullReferenceException exception is thrown when you try to access a member on a type whose value is null. Eine NullReferenceException -Ausnahme spiegelt normalerweise den Entwickler Fehler wider und wird in den folgenden Szenarien ausgelöst:A NullReferenceException exception typically reflects developer error and is thrown in the following scenarios:

  • Sie haben vergessen, einen Verweistyp zu instanziieren.You've forgotten to instantiate a reference type. Im folgenden Beispiel ist deklariert names , wird aber nie instanziiert: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()
    

    Einige Compiler geben eine Warnung aus, wenn Sie diesen Code kompilieren.Some compilers issue a warning when they compile this code. Andere geben einen Fehler aus, und die Kompilierung schlägt fehl.Others issue an error, and the compilation fails. Um dieses Problem zu beheben, instanziieren Sie das Objekt, sodass der Wert nicht nullmehr ist.To address this problem, instantiate the object so that its value is no longer null. Im folgenden Beispiel wird der Klassenkonstruktor eines Typs aufgerufen.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
    
  • Sie haben vergessen, ein Array zu dimensionieren, bevor Sie es initialisieren.You've forgotten to dimension an array before initializing it. Im folgenden Beispiel values wird als ein ganzzahliges Array deklariert, aber die Anzahl der enthaltenen Elemente wird nie angegeben.In the following example, values is declared to be an integer array, but the number of elements that it contains is never specified. Der Versuch, seine Werte zu initialisieren, hat NullReferenceException daher eine-Ausnahme ausgelöst.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()
    

    Sie können die Ausnahme eliminieren, indem Sie die Anzahl der Elemente im Array vor der Initialisierung deklarieren, wie im folgenden Beispiel dargestellt.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
    

    Weitere Informationen zum Deklarieren und Initialisieren von Arrays finden Sie unter Arrays und Arrays.For more information on declaring and initializing arrays, see Arrays and Arrays.

  • Sie erhalten einen null -Rückgabewert von einer Methode und dann eine Methode für den zurückgegebenen Typ.You get a null return value from a method, and then call a method on the returned type. Dies ist manchmal das Ergebnis eines Dokumentations Fehlers. in der Dokumentation ist nicht zu beachten, dass ein Methoden nullAufrufe zurückgeben kann.This sometimes is the result of a documentation error; the documentation fails to note that a method call can return null. In anderen Fällen geht der Code fälschlicherweise davon aus, dass die Methode immer einen Wert ungleichnull zurückgibt.In other cases, your code erroneously assumes that the method will always return a non-null value.

    Der Code im folgenden Beispiel setzt voraus, dass Array.Find die Methode immer Person ein Objekt FirstName zurückgibt, dessen Feld mit einer Such Zeichenfolge übereinstimmt.The code in the following example assumes that the Array.Find method always returns Person object whose FirstName field matches a search string. Da es keine Entsprechung gibt, löst die Laufzeit NullReferenceException eine-Ausnahme aus.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()
    

    Um dieses Problem zu beheben, testen Sie den Rückgabewert der Methode, um sicherzustellen null , dass er vor dem Aufrufen eines seiner Member nicht aufgerufen wird, wie im folgenden Beispiel dargestellt.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
    
  • Sie verwenden einen Ausdruck (z. b., Sie verketten eine Liste von Methoden oder Eigenschaften), um einen Wert abzurufen. Obwohl Sie überprüfen, ob der Wert ist null, löst die Laufzeit trotzdem eine NullReferenceException -Ausnahme aus.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. Dies tritt auf, weil einer der Zwischenwerte im Ausdruck zurück nullgibt.This occurs because one of the intermediate values in the expression returns null. Daher wird der Test für null nie ausgewertet.As a result, your test for null is never evaluated.

    Im folgenden Beispiel wird ein Pages -Objekt definiert, das Informationen zu Webseiten zwischenspeichert, die Page von-Objekten dargestellt werden.The following example defines a Pages object that caches information about web pages, which are presented by Page objects. Die Example.Main -Methode überprüft, ob die aktuelle Webseite einen nicht-NULL-Titel aufweist, und zeigt, wenn dies der Fall ist, den Titel an.The Example.Main method checks whether the current web page has a non-null title and, if it does, displays the title. Trotz dieser Überprüfung löst die Methode jedoch eine NullReferenceException -Ausnahme aus.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()
    

    Die-Ausnahme wird ausgelöst pages.CurrentPage , null da zurückgibt, wenn keine Seiten Informationen im Cache gespeichert werden.The exception is thrown because pages.CurrentPage returns null if no page information is stored in the cache. Diese Ausnahme kann korrigiert werden, indem Sie den Wert der CurrentPage -Eigenschaft testen, bevor Sie Page die- Title Eigenschaft des aktuellen-Objekts abrufen, wie im folgenden Beispiel gezeigt: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.
    
  • Sie zählen die Elemente eines Arrays, das Verweis Typen enthält, und der Versuch, eines der Elemente zu verarbeiten, löst eine NullReferenceException -Ausnahme aus.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.

    Im folgenden Beispiel wird ein Zeichen folgen Array definiert.The following example defines a string array. Eine for -Anweisung zählt die Elemente im Array auf und ruft die- Trim Methode der einzelnen Zeichen folgen auf, bevor die Zeichenfolge angezeigt wird.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()
    

    Diese Ausnahme tritt auf, wenn Sie davon ausgehen, dass jedes Element des Arrays einen nicht-NULL-Wert enthalten muss und der Wert des Array Elements tatsächlich nullist.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. Die Ausnahme kann vermieden werden, indem Sie überprüfen, null ob das-Element vor dem Ausführen eines Vorgangs für dieses Element vorliegt, wie im folgenden Beispiel gezeigt.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
    
  • Eine- nullAusnahme wird von einer Methode ausgelöst, die übermittelt wird. NullReferenceExceptionA NullReferenceException exception is thrown by a method that is passed null. Einige Methoden überprüfen die Argumente, die an Sie übermittelt werden.Some methods validate the arguments that are passed to them. Wenn dies der Fall ist und eines der Argumente nullist, löst die Methode System.ArgumentNullException eine Ausnahme aus.If they do and one of the arguments is null, the method throws an System.ArgumentNullException exception. Andernfalls wird eine NullReferenceException -Ausnahme ausgelöst.Otherwise, it throws a NullReferenceException exception. Dieses Szenario wird im folgenden Beispiel veranschaulicht.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()
    

    Um dieses Problem zu beheben, stellen Sie sicher, dass das an die-Methode nullüber gegebene Argument nicht ist, oder behandeln try…catch…finally Sie die ausgelöste Ausnahme in einem-Block.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. Weitere Informationen finden Sie unter Ausnahmendefiniert sind.For more information, see Exceptions.

NullReferenceExceptionDie folgenden MSIL-Anweisungen (Microsoft Intermediate Language) lösen Folgendes aus: initblk ldflda ldfld callvirt, ldelem.<type> cpblk, ldelema cpobj,,, ldind.<type> ,,, , ldlen, stelem.<type>, ,stfld ,throwund. stind.<type> unboxThe 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.

NullReferenceExceptionverwendet das HRESULT-COR_E_NULLREFERENCE, das den Wert 0x80004003 aufweist.NullReferenceException uses the HRESULT COR_E_NULLREFERENCE, which has the value 0x80004003.

Eine Liste der anfänglichen Eigenschaftswerte für eine Instanz von NullReferenceException, finden Sie unter den NullReferenceException Konstruktoren.For a list of initial property values for an instance of NullReferenceException, see the NullReferenceException constructors.

Behandeln von NullReferenceException im ReleaseCodeHandling NullReferenceException in release code

Es ist in der Regel besser, eine NullReferenceException zu vermeiden, als Sie nach dem Auftreten zu behandeln.It's usually better to avoid a NullReferenceException than to handle it after it occurs. Die Behandlung von Ausnahmen kann die Wartbarkeit und Lesbarkeit Ihres Codes erschweren und gelegentlich sogar zu neuen Problemen führen.Handling an exception can make your code harder to maintain and understand, and can sometimes introduce other bugs. NullReferenceExceptions sind oftmals nicht behebbare Fehler.A NullReferenceException is often a non-recoverable error. In diesen Fällen macht es oft Sinn, wenn die Ausnahme die Anwendung beenden kann.In these cases, letting the exception stop the app might be the best alternative.

Oft ist es jedoch auch möglich, den Fehler auf sinnvolle Art zu behandeln.However, there are many situations where handling the error can be useful:

  • Ihre Anwendung kann Objekte ignorieren, die null sind.Your app can ignore objects that are null. Wenn Ihre Anwendung Einträge in einer Datenbank abruft und verarbeitet, können Sie z. B. ungültige Einträge ignorieren, die zu Nullobjekten führen.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. Möglicherweise reicht es aus, die ungültigen Daten in einer Protokolldatei oder der Anwendungs-GUI aufzuzeichnen.Recording the bad data in a log file or in the application UI might be all you have to do.

  • Sie können nach einer Ausnahme fortfahren.You can recover from the exception. Aufrufe an einen Webdienst, der einen Verweistyp zurückgibt, können z. B. null zurückgeben, wenn die Verbindung unterbrochen wird oder eine Zeitüberschreitung auftritt. Sie können versuchen, die Verbindung erneut herzustellen oder den Aufruf zu wiederholen.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.

  • Sie können Ihre Anwendung zurück in einen gültigen Status versetzen.You can restore the state of your app to a valid state. Wenn Sie z. B. eine Aufgabe mit mehreren Schritten ausführen, die Informationen in einem Datenspeicher ablegen muss, bevor eine Methode aufgerufen wird, die eine NullReferenceException zurückgibt.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. Wenn das nicht initialisierte Objekt den Datensatz ungültig machen würde, können Sie z. B. die vorherigen Daten entfernen, bevor Sie die Anwendung schließen.If the uninitialized object would corrupt the data record, you can remove the previous data before you close the app.

  • Sie möchten die Ausnahme melden.You want to report the exception. Wenn der Fehler z. B. von einem Benutzer Ihrer Anwendung verursacht wurde, möchten Sie möglicherweise eine Nachricht generieren, um den Benutzer bei der Angabe der korrekten Informationen zu unterstützen.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. Außerdem können Sie Informationen über den Fehler protokollieren, um bei der Korrektur des Problems zu helfen.You can also log information about the error to help you fix the problem. Einige Frameworks, wie ASP.NET, verfügen über einen hohen Ausnahmehandler, der alle Fehler aufzeichnet, damit die Anwendung nie abstürzt. In diesem Fall kann die Protokollierung der Ausnahme möglicherweise die einzige Möglichkeit sein, damit Sie wissen, dass sie auftritt.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.

Konstruktoren

NullReferenceException() NullReferenceException() NullReferenceException() NullReferenceException()

Initialisiert eine neue Instanz der NullReferenceException-Klasse. Dabei wird die Message-Eigenschaft der neuen Instanz auf eine vom System gelieferte Meldung festgelegt, die den Fehler beschreibt, z. B. "Der Wert 'null' wurde gefunden, als eine Objektinstanz erforderlich war".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." Diese Meldung berücksichtigt die aktuelle Systemkultur.This message takes into account the current system culture.

NullReferenceException(SerializationInfo, StreamingContext) NullReferenceException(SerializationInfo, StreamingContext) NullReferenceException(SerializationInfo, StreamingContext) NullReferenceException(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der NullReferenceException-Klasse mit serialisierten Daten.Initializes a new instance of the NullReferenceException class with serialized data.

NullReferenceException(String) NullReferenceException(String) NullReferenceException(String) NullReferenceException(String)

Initialisiert eine neue Instanz der NullReferenceException-Klasse mit einer angegebenen Fehlermeldung.Initializes a new instance of the NullReferenceException class with a specified error message.

NullReferenceException(String, Exception) NullReferenceException(String, Exception) NullReferenceException(String, Exception) NullReferenceException(String, Exception)

Initialisiert eine neue Instanz der NullReferenceException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.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.

Eigenschaften

Data Data Data Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen über die Ausnahme bereitstellen.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
Message Message Message Message

Ruft eine Meldung ab, die die aktuelle Ausnahme beschreibt.Gets a message that describes the current exception.

(Inherited from Exception)
Source Source Source Source

Gibt den Namen der Anwendung oder des Objekts zurück, die bzw. das den Fehler verursacht hat, oder legt diesen fest.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.Gets the method that throws the current exception.

(Inherited from Exception)

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetBaseException() GetBaseException() GetBaseException() GetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die ursprüngliche Ursache für eine oder mehrere nachfolgende Ausnahmen ist.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Inherited from Exception)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext)

Legt beim Überschreiben in einer abgeleiteten Klasse die SerializationInfo mit Informationen über die Ausnahme fest.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Inherited from Exception)
GetType() GetType() GetType() GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.Gets the runtime type of the current instance.

(Inherited from Exception)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Erstellt eine Zeichenfolgendarstellung der aktuellen Ausnahme und gibt diese zurück.Creates and returns a string representation of the current exception.

(Inherited from Exception)

Ereignisse

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Gilt für:

Siehe auch