NullReferenceException NullReferenceException NullReferenceException NullReferenceException Class

Definicja

Wyjątek, który jest zgłaszany, gdy jest próba wyłuskania odwołanie do obiektu o wartości 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
Dziedziczenie
NullReferenceExceptionNullReferenceExceptionNullReferenceExceptionNullReferenceException
Atrybuty

Uwagi

A NullReferenceException wyjątek podczas próby dostępu do składowej w typie, którego wartością jest null.A NullReferenceException exception is thrown when you try to access a member on a type whose value is null. A NullReferenceException wyjątek zazwyczaj odzwierciedla błąd dla deweloperów i jest generowany w następujących scenariuszach:A NullReferenceException exception typically reflects developer error and is thrown in the following scenarios:

  • Pamiętasz do utworzenia wystąpienia typu referencyjnego.You've forgotten to instantiate a reference type. W poniższym przykładzie names jest zadeklarowana, ale nigdy nie miała wystąpień: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()
    

    Niektóre kompilatory generują ostrzeżenie, gdy ich skompilować ten kod.Some compilers issue a warning when they compile this code. Inne zgłosi błąd, a kompilacja kończy się niepowodzeniem.Others issue an error, and the compilation fails. Aby rozwiązać ten problem, Utwórz wystąpienie obiektu, który ma tak, aby jego wartość nie jest już null.To address this problem, instantiate the object so that its value is no longer null. Poniższy przykład robi to przez wywołanie konstruktora klasy typu.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
    
  • Pamiętasz wymiaru tablicy przed jego inicjowania.You've forgotten to dimension an array before initializing it. W poniższym przykładzie values został zadeklarowany jako tablicę liczb całkowitych, ale nigdy nie określono liczby elementów, które zawiera.In the following example, values is declared to be an integer array, but the number of elements that it contains is never specified. Próba zainicjowania jego wartości generowany w związku z tym NullReferenceException wyjątku.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()
    

    Wyjątek może wyeliminować przez zadeklarowanie przed inicjowanie, liczba elementów w tablicy, tak jak w poniższym przykładzie.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
    

    Aby uzyskać więcej informacji na temat deklarowania i inicjowania tablic, zobacz tablic i tablic.For more information on declaring and initializing arrays, see Arrays and Arrays.

  • Możesz uzyskać null wartość zwracana z metody, a następnie wywołaj metodę dla zwracanego typu.You get a null return value from a method, and then call a method on the returned type. Czasami jest to wynik błędu dokumentacji; Dokumentacja zakończy się niepowodzeniem, należy pamiętać, że wywołanie metody może zwrócić null.This sometimes is the result of a documentation error; the documentation fails to note that a method call can return null. W innych przypadkach kodu błędnie przyjęto założenie, że metoda zawsze zwraca innej niżnull wartość.In other cases, your code erroneously assumes that the method will always return a non-null value.

    Kod w poniższym przykładzie założono, że Array.Find metoda zawsze zwraca Person którego FirstName pola pasuje do ciągu wyszukiwania.The code in the following example assumes that the Array.Find method always returns Person object whose FirstName field matches a search string. Ponieważ nie ma dopasowania, środowisko wykonawcze zgłasza NullReferenceException wyjątku.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()
    

    Aby rozwiązać ten problem, należy przetestować wartości zwracanej metody, aby upewnić się, że nie jest null przed wywołaniem dowolnej swoich elementów członkowskich, tak jak w poniższym przykładzie.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
    
  • Teraz za pomocą wyrażenia (na przykład możesz one Łączenie łańcuchowe listę właściwości lub metody) do pobierania wartości i, mimo że w przypadku sprawdzania, czy wartość jest null, środowisko wykonawcze nadal zgłasza NullReferenceException wyjątek.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. Dzieje się tak dlatego zwraca jedną z wartości pośrednich w wyrażeniu null.This occurs because one of the intermediate values in the expression returns null. W wyniku testu dla null nigdy nie jest obliczane.As a result, your test for null is never evaluated.

    W poniższym przykładzie zdefiniowano Pages obiekt, który przechowuje informacje dotyczące stron sieci web, które są uporządkowane według Page obiektów.The following example defines a Pages object that caches information about web pages, which are presented by Page objects. Example.Main Metoda sprawdza, czy bieżącej strony sieci web ma tytuł inną niż null, a jeśli tak jest, Wyświetla tytuł.The Example.Main method checks whether the current web page has a non-null title and, if it does, displays the title. Niezależnie od tego wyboru, metoda zgłasza NullReferenceException wyjątku.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()
    

    Wyjątek jest zgłaszany, ponieważ pages.CurrentPage zwraca null Jeśli nie informacje ze strony jest przechowywana w pamięci podręcznej.The exception is thrown because pages.CurrentPage returns null if no page information is stored in the cache. Wyjątek ten problem można rozwiązać, testując wartość CurrentPage właściwości przed pobraniem bieżącego Page obiektu Title właściwości, w poniższym przykładzie jest: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.
    
  • Masz wyliczania elementów tablicy, która zawiera typy odwołań i próba procesu zgłasza jeden z elementów NullReferenceException wyjątku.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.

    W poniższym przykładzie zdefiniowano tablicę ciągów.The following example defines a string array. A for instrukcji wylicza elementów w tablicy i wywołuje każdego ciągu Trim metoda przed wyświetleniem ciągu.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()
    

    Ten wyjątek występuje, jeśli przyjęto założenie, że każdy element tablicy musi zawierać wartość inną niż null i wartości elementu tablicy jest w rzeczywistości 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. Wyjątek mogą zostać usunięte przez sprawdzenie, czy element jest null przed wykonaniem żadnych operacji na ten element, w poniższym przykładzie pokazano.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
    
  • A NullReferenceException wyjątku przez metodę, która jest przekazywana null.A NullReferenceException exception is thrown by a method that is passed null. Niektóre metody sprawdzania poprawności argumentów, które są przekazywane do nich.Some methods validate the arguments that are passed to them. Jeśli tak, a jeden z argumentów jest null, metoda zgłasza System.ArgumentNullException wyjątku.If they do and one of the arguments is null, the method throws an System.ArgumentNullException exception. W przeciwnym razie wyniku weryfikacji zgłasza wyjątek NullReferenceException wyjątku.Otherwise, it throws a NullReferenceException exception. Poniższy przykład ilustruje ten scenariusz.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()
    

    Aby rozwiązać ten problem, upewnij się, że argument przekazany do metody nie jest null, lub obsłużyć Wyrzucony wyjątek w try…catch…finally bloku.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. Aby uzyskać więcej informacji, zobacz wyjątki.For more information, see Exceptions.

Firmy Microsoft intermediate language (MSIL) instrukcji throw NullReferenceException: callvirt, cpblk, cpobj, initblk, ldelem.<type>, ldelema, ldfld, ldflda, ldind.<type> , ldlen, stelem.<type>, stfld, stind.<type>, throw, i unbox.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 używa COR_E_NULLREFERENCE HRESULT, która ma wartość 0x80004003.NullReferenceException uses the HRESULT COR_E_NULLREFERENCE, which has the value 0x80004003.

Aby uzyskać listę początkowe wartości właściwości wystąpienia NullReferenceException, zobacz NullReferenceException konstruktorów.For a list of initial property values for an instance of NullReferenceException, see the NullReferenceException constructors.

Obsługa obiektu NullReferenceException w kodzie wersjiHandling NullReferenceException in release code

Jest to zazwyczaj lepiej uniknąć obiektu NullReferenceException nie do jego obsługi po jego wystąpieniu.It's usually better to avoid a NullReferenceException than to handle it after it occurs. Obsługa wyjątku Twój kod może być trudniejsze do utrzymywania i zrozumieć i czasami może prowadzić do innych błędów.Handling an exception can make your code harder to maintain and understand, and can sometimes introduce other bugs. Obiektu NullReferenceException często jest to nieodwracalny błąd.A NullReferenceException is often a non-recoverable error. W takich przypadkach informacją o wyjątku, Zatrzymaj aplikację może być najlepszą alternatywą.In these cases, letting the exception stop the app might be the best alternative.

Jednak istnieje wiele sytuacji, w którym obsługi błędu może być przydatne:However, there are many situations where handling the error can be useful:

  • Aplikację można zignorować obiektów, które mają wartość null.Your app can ignore objects that are null. Na przykład jeśli Twoja aplikacja pobiera i przetwarza rekordy w bazie danych, można zignorować pewnej liczby nieprawidłowych rekordów, których wynikiem obiektów o wartości 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. Rejestrowanie złe dane w pliku dziennika lub w aplikacji interfejsu użytkownika może być wszystko, co należy zrobić.Recording the bad data in a log file or in the application UI might be all you have to do.

  • Można odzyskać z wyjątku.You can recover from the exception. Na przykład wywołanie usługi sieci web, która zwraca typ odwołania może zwrócić wartość null, jeśli połączenie zostanie przerwane lub upłynie limit czasu połączenia. Można spróbować ponownie nawiązać połączenie i spróbuj ponownie.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.

  • Do prawidłowego stanu, można przywrócić stan aplikacji.You can restore the state of your app to a valid state. Na przykład użytkownik może wykonywać zadania wieloetapowe wymaga zapisania informacji w magazynie danych, przed wywołaniem metody, która zgłasza obiektu 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. Jeśli niezainicjowanego obiektu może spowodować uszkodzenie rekord danych, możesz usunąć poprzednie dane przed zamknięciem aplikacji.If the uninitialized object would corrupt the data record, you can remove the previous data before you close the app.

  • Należy zgłosić wyjątek.You want to report the exception. Na przykład jeśli błąd został spowodowany przez błąd użytkownika aplikacji, można wygenerować komunikatu ułatwiające go podać poprawne informacje.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. Można również rejestrować informacje o błędzie, aby pomóc rozwiązać ten problem.You can also log information about the error to help you fix the problem. Niektóre struktur, takich jak ASP.NET, mają wyjątek ogólny program obsługi, który przechwytuje wszystkie błędy, nigdy nie ulega awarii aplikacji; w takim przypadku rejestrowania wyjątku może być jedynym sposobem możesz sprawdzać występowanie tego ciągu.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.

Konstruktory

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

Inicjuje nowe wystąpienie klasy NullReferenceException klasy, ustawienie Message właściwości nowego wystąpienia dostarczane przez system komunikat, który opisuje błąd, takie jak "wartość"null"znaleziono, gdzie wystąpienie obiektu była wymagana."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." Ten komunikat uwzględnia bieżącą kulturę systemu.This message takes into account the current system culture.

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

Inicjuje nowe wystąpienie klasy NullReferenceException klasy z serializowanych danych.Initializes a new instance of the NullReferenceException class with serialized data.

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

Inicjuje nowe wystąpienie klasy NullReferenceException klasy przy użyciu określonego komunikatu o błędzie.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)

Inicjuje nowe wystąpienie klasy NullReferenceException klasy przy użyciu określonego komunikatu o błędzie i odwołania do wewnętrznego wyjątku, który jest przyczyną tego wyjątku.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.

Właściwości

Data Data Data Data

Pobiera kolekcję par klucz/wartość, które zawierają dodatkowe informacje zdefiniowane przez użytkownika o wyjątku.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Pobiera lub ustawia łącze, aby plik pomocy skojarzony z tym wyjątkiem.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Pobiera lub ustawia wartość HRESULT, kodowane wartość liczbową, która jest przypisana do określonego wyjątku.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Pobiera Exception wystąpienia, który spowodował bieżący wyjątek.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
Message Message Message Message

Pobiera komunikat, który opisuje bieżący wyjątek.Gets a message that describes the current exception.

(Inherited from Exception)
Source Source Source Source

Pobiera lub ustawia nazwę aplikacji lub obiekt, który powoduje błąd.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Pobiera reprezentację ciągu natychmiastowego ramek na stosie wywołań.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Pobiera metodę, która bieżący wyjątek.Gets the method that throws the current exception.

(Inherited from Exception)

Metody

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

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

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

Po przesłonięciu w klasie pochodnej zwraca Exception czyli główną przyczynę jeden lub kilka kolejnych wyjątków.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()

Służy jako domyślnej funkcji skrótu.Serves as the default hash function.

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

W przypadku przesłonięcia w klasie pochodnej, ustawia SerializationInfo przy użyciu informacji o wyjątku.When overridden in a derived class, sets the SerializationInfo with information about the exception.

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

Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia.Gets the runtime type of the current instance.

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

Tworzy płytką kopię bieżącego Object.Creates a shallow copy of the current Object.

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

Tworzy i zwraca reprezentację ciągu bieżącego wyjątku.Creates and returns a string representation of the current exception.

(Inherited from Exception)

Zdarzenia

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Występuje, gdy wyjątek jest serializowana. Aby utworzyć obiekt stan wyjątku, który zawiera serializowane dane o wyjątku.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Dotyczy

Zobacz też