NullReferenceException Třída

Definice

Výjimka, která je vyvolána, když dojde k pokusu o přeodkazování na nulový odkaz na objekt.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
Dědičnost
NullReferenceException
Atributy

Poznámky

Výjimka je vyvolána, když se pokusíte o přístup ke členu typu, jehož hodnota nullje. NullReferenceExceptionA NullReferenceException exception is thrown when you try to access a member on a type whose value is null. NullReferenceException Výjimka obvykle odráží chybu vývojáře a je vyvolána v následujících situacích:A NullReferenceException exception typically reflects developer error and is thrown in the following scenarios:

  • Zapomněli jste vytvořit instanci typu odkazu.You've forgotten to instantiate a reference type. V následujícím příkladu je deklarována, names ale nikdy není vytvořena instance: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()
    

    Některé kompilátory při kompilování tohoto kódu vystaví upozornění.Some compilers issue a warning when they compile this code. Ostatní uživatelé nastavují chybu a kompilace se nezdařila.Others issue an error, and the compilation fails. Chcete-li tento problém vyřešit, vytvořte instanci objektu tak, aby jeho hodnota již nullnení.To address this problem, instantiate the object so that its value is no longer null. Následující příklad provádí volání konstruktoru třídy 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
    
  • Zapomněli jste vyrozměrit pole před inicializací.You've forgotten to dimension an array before initializing it. V následujícím příkladu values je deklarován jako pole typu Integer, ale počet prvků, které obsahuje, není nikdy zadán.In the following example, values is declared to be an integer array, but the number of elements that it contains is never specified. Pokus o inicializaci svých hodnot proto vyvolal NullReferenceException výjimku.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()
    

    Výjimku můžete eliminovat tím, že deklarujete počet prvků v poli před inicializací, jak je znázorněno v následujícím příkladu.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
    

    Další informace o deklaraci a inicializaci polí naleznete v tématu pole a pole.For more information on declaring and initializing arrays, see Arrays and Arrays.

  • Z metody získáte návratovou hodnotu null a potom zavoláte metodu pro vrácený typ.You get a null return value from a method, and then call a method on the returned type. V některých případech je to v důsledku chyby dokumentace. dokumentace nedokáže poznamenat, že volání metody může vracet null.This sometimes is the result of a documentation error; the documentation fails to note that a method call can return null. V jiných případech kód nesprávně předpokládá, že metoda vždycky vrátí hodnotu, která nenínull .In other cases, your code erroneously assumes that the method will always return a non-null value.

    Kód v následujícím příkladu předpokládá, že Array.Find metoda vždy vrátí Person objekt, jehož FirstName pole odpovídá hledanému řetězci.The code in the following example assumes that the Array.Find method always returns Person object whose FirstName field matches a search string. Vzhledem k tomu, že neexistuje žádná shoda, modul NullReferenceException runtime vyvolá výjimku.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()
    

    Chcete-li vyřešit tento problém, otestujte vrácenou hodnotu metody, abyste zajistili, null že není před voláním některého z jeho členů, jak je uvedeno v následujícím příkladu.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
    
  • Používáte výraz (například řetězení seznamu metod nebo vlastností) pro načtení hodnoty a i když kontrolujete, zda je nullhodnota, modul runtime stále NullReferenceException vyvolá výjimku.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. K tomu dochází, protože jedna z mezilehlých hodnot ve nullvýrazu vrátí.This occurs because one of the intermediate values in the expression returns null. V důsledku toho test pro null není nikdy vyhodnocen.As a result, your test for null is never evaluated.

    Následující příklad definuje Pages objekt, který ukládá do mezipaměti informace o webových stránkách, které jsou Page prezentovány objekty.The following example defines a Pages object that caches information about web pages, which are presented by Page objects. Example.Main Metoda zkontroluje, zda má aktuální webová stránka název, který není null a v případě potřeby zobrazí název.The Example.Main method checks whether the current web page has a non-null title and, if it does, displays the title. Navzdory této kontrole však metoda vyvolá NullReferenceException výjimku.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()
    

    Výjimka je vyvolána, protože pages.CurrentPage vrátí null , pokud v mezipaměti nejsou uloženy žádné informace o stránce.The exception is thrown because pages.CurrentPage returns null if no page information is stored in the cache. Tato výjimka se dá opravit otestováním hodnoty CurrentPage vlastnosti před načtením Title vlastnosti aktuálního Page objektu, jak je znázorněno v následujícím příkladu: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.
    
  • Vytváříte výčet prvků pole, které obsahuje typy odkazů, a váš pokus o zpracování jednoho z prvků vyvolá NullReferenceException výjimku.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.

    Následující příklad definuje pole řetězců.The following example defines a string array. Příkaz vytvoří výčet prvků v poli a před zobrazením řetězce volá Trim metodu každého řetězce. forA 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()
    

    K této výjimce dojde, pokud předpokládáte, že každý prvek pole musí obsahovat hodnotu jinou než null a hodnota prvku pole je ve skutečnosti 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. Výjimku lze eliminovat otestováním, zda je null prvek před provedením jakékoli operace s tímto prvkem, jak ukazuje následující příklad.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
    
  • Výjimka je vyvolána metodou, která je předána null. NullReferenceExceptionA NullReferenceException exception is thrown by a method that is passed null. Některé metody ověřují argumenty, které jsou předány.Some methods validate the arguments that are passed to them. Pokud a jeden z argumentů je null, metoda System.ArgumentNullException vyvolá výjimku.If they do and one of the arguments is null, the method throws an System.ArgumentNullException exception. V opačném případě vyvolá NullReferenceException výjimku.Otherwise, it throws a NullReferenceException exception. Následující příklad znázorňuje tento scénář.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()
    

    Chcete-li tento problém vyřešit, ujistěte se, že argument předaný metodě není nullnebo nezpracovává vyvolanou výjimku try…catch…finally v 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. Další informace najdete v tématu výjimky.For more information, see Exceptions.

Následující pokyny jazyka MSIL (Microsoft Intermediate Language) vyvolávají NullReferenceException: callvirt, cpblk, cpobj, initblk, ldelem.<type>, ldelema, ldfld, ldflda, ldind.<type> , ldlen ,stelem.<type>, ,stind.<type>, athrow. stfld 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.

NullReferenceExceptionpoužívá HRESULT COR_E_NULLREFERENCE, který má hodnotu 0x80004003.NullReferenceException uses the HRESULT COR_E_NULLREFERENCE, which has the value 0x80004003.

Seznam počáteční hodnoty vlastností pro instanci NullReferenceException, najdete v článku NullReferenceException konstruktory.For a list of initial property values for an instance of NullReferenceException, see the NullReferenceException constructors.

Zpracování NullReferenceException v kódu vydáníHandling NullReferenceException in release code

Obvykle je lepší vyhnout se NullReferenceException, než ho bude možné zpracovat po jeho výskytu.It's usually better to avoid a NullReferenceException than to handle it after it occurs. Manipulace s výjimkou může vést k tomu, že váš kód bude obtížnější udržovat a pochopit a může někdy zavádět i další chyby.Handling an exception can make your code harder to maintain and understand, and can sometimes introduce other bugs. NullReferenceException je často neobnovitelná chyba.A NullReferenceException is often a non-recoverable error. V těchto případech je možné, že je možné, že se aplikace stane nejlepší alternativou.In these cases, letting the exception stop the app might be the best alternative.

Existuje však mnoho situací, kdy může být zpracování chyby užitečné:However, there are many situations where handling the error can be useful:

  • Vaše aplikace může ignorovat objekty, které mají hodnotu null.Your app can ignore objects that are null. Například pokud vaše aplikace načítá a zpracovává záznamy v databázi, může být možné ignorovat určitý počet špatných záznamů, jejichž výsledkem jsou objekty 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. Záznam chybných dat v souboru protokolu nebo v uživatelském rozhraní aplikace může být vše, co musíte udělat.Recording the bad data in a log file or in the application UI might be all you have to do.

  • Z výjimky můžete provést obnovení.You can recover from the exception. Například volání webové služby, které vrací typ odkazu, může vrátit hodnotu null, pokud dojde ke ztrátě připojení nebo vyprší časový limit připojení. Můžete se pokusit znovu vytvořit připojení a pokusit se zavolat znovu.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.

  • Stav aplikace můžete obnovit do platného stavu.You can restore the state of your app to a valid state. Například je možné provést úlohu s více kroky, která vyžaduje uložení informací do úložiště dat před voláním metody, která vyvolá 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. Pokud by Neinicializovaný objekt poškodil datový záznam, můžete předchozí data odebrat před zavřením aplikace.If the uninitialized object would corrupt the data record, you can remove the previous data before you close the app.

  • Tuto výjimku chcete ohlásit.You want to report the exception. Pokud například chyba byla způsobena omylem od uživatele vaší aplikace, můžete vygenerovat zprávu, která mu poskytne správné informace.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. Můžete také protokolovat informace o chybě, abyste mohli problém vyřešit.You can also log information about the error to help you fix the problem. Některá rozhraní, jako je například ASP.NET, mají obslužnou rutinu výjimky vysoké úrovně, která zachycuje všechny chyby na to, že aplikace nikdy neselže. v takovém případě protokolování výjimky může být jediným způsobem, jak můžete zjistit, že k ní dojde.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()

Inicializuje novou instanci NullReferenceException třídy, Message nastaví vlastnost nové instance na zprávu dodanou systémem, která popisuje chybu, například "hodnota null" byla nalezena tam, kde byla požadována instance objektu. "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." Tato zpráva přihlíží k aktuální jazykové verze systému.This message takes into account the current system culture.

NullReferenceException(SerializationInfo, StreamingContext)

Inicializuje novou instanci třídy NullReferenceException třídy se serializovanými daty.Initializes a new instance of the NullReferenceException class with serialized data.

NullReferenceException(String)

Inicializuje novou instanci třídy NullReferenceException třídy pomocí zadané chybové zprávy.Initializes a new instance of the NullReferenceException class with a specified error message.

NullReferenceException(String, Exception)

Inicializuje novou instanci třídy NullReferenceException třídy pomocí zadané chybové zprávy a odkazu na vnitřní výjimku, která je příčinou této výjimky.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.

Vlastnosti

Data

Získá kolekci párů klíč/hodnota, které poskytují další uživatelsky definované informace o výjimce.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Zděděno od Exception)
HelpLink

Získá nebo nastaví odkaz na soubor s nápovědě spojený s touto výjimkou.Gets or sets a link to the help file associated with this exception.

(Zděděno od Exception)
HResult

Získá nebo nastaví hodnotu HRESULT, kódované číselné hodnoty, která je přiřazena konkrétní výjimce.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Zděděno od Exception)
InnerException

Získá instanci Exception, která způsobila aktuální výjimku.Gets the Exception instance that caused the current exception.

(Zděděno od Exception)
Message

Získá zprávu s popisem aktuální výjimky.Gets a message that describes the current exception.

(Zděděno od Exception)
Source

Získá nebo nastaví název aplikace nebo objektu, který způsobuje chybu.Gets or sets the name of the application or the object that causes the error.

(Zděděno od Exception)
StackTrace

Načte řetězcovou reprezentaci okamžitých snímků v zásobníku volání.Gets a string representation of the immediate frames on the call stack.

(Zděděno od Exception)
TargetSite

Získá metodu, která vyvolá aktuální výjimku.Gets the method that throws the current exception.

(Zděděno od Exception)

Metody

Equals(Object)

Určuje, zda se zadaný objekt rovná aktuálnímu objektu.Determines whether the specified object is equal to the current object.

(Zděděno od Object)
GetBaseException()

Při přepsání v odvozené třídě vrátí Exception, který je hlavní příčinou jedné nebo více následných výjimek.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Zděděno od Exception)
GetHashCode()

Slouží jako výchozí funkce hash.Serves as the default hash function.

(Zděděno od Object)
GetObjectData(SerializationInfo, StreamingContext)

Při přepsání v odvozené třídě nastaví SerializationInfo s informacemi o výjimce.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Zděděno od Exception)
GetType()

Získá typ modulu runtime aktuální instance.Gets the runtime type of the current instance.

(Zděděno od Exception)
MemberwiseClone()

Vytvoří kopii aktuálního Objectbez podstruktury.Creates a shallow copy of the current Object.

(Zděděno od Object)
ToString()

Vytvoří a vrátí řetězcovou reprezentaci aktuální výjimky.Creates and returns a string representation of the current exception.

(Zděděno od Exception)

Události

SerializeObjectState

Nastane, pokud je serializovaná výjimka pro vytvoření objektu stavu výjimky, který obsahuje Serializovaná data o výjimce.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Zděděno od Exception)

Platí pro

Viz také