NullReferenceException 클래스

정의

null 개체 참조를 역참조하려고 할 때 throw되는 예외입니다.The exception that is thrown when there is an attempt to dereference a null object reference.

public ref class NullReferenceException : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class NullReferenceException : SystemException
type NullReferenceException = class
    inherit SystemException
Public Class NullReferenceException
Inherits SystemException
상속
NullReferenceException
특성

설명

A NullReferenceException 값인 형식의 멤버에 액세스 하려고 할 때 예외가 throw 됩니다 null합니다.A NullReferenceException exception is thrown when you try to access a member on a type whose value is null. NullReferenceException 예외에서 일반적으로 개발자 오류를 반영 하 고 다음과 같은 시나리오에서 throw 됩니다.A NullReferenceException exception typically reflects developer error and is thrown in the following scenarios:

  • 참조 형식을 인스턴스화할 하지 않았습니다.You've forgotten to instantiate a reference type. 다음 예에서 names 선언 되었지만 인스턴스화되지:In the following example, names is declared but never instantiated:

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

    일부 컴파일러에서는이 코드를 컴파일하면 경고가 발생 합니다.Some compilers issue a warning when they compile this code. 다른 오류가 고 컴파일이 실패 합니다.Others issue an error, and the compilation fails. 이 문제를 해결 하기 위해 개체를 인스턴스화한 후 해당 값은 더 이상 있도록 null입니다.To address this problem, instantiate the object so that its value is no longer null. 다음 예제에서는 형식의 클래스 생성자를 호출 하 여이 수행 합니다.The following example does this by calling a type's class constructor.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       public static void Main()
       {
          List<String> names = new List<String>();
          names.Add("Major Major Major");
       }
    }
    
    Imports System.Collections.Generic
    
    Module Example
       Public Sub Main()
          Dim names As New List(Of String)()
          names.Add("Major Major Major")       
       End Sub
    End Module
    
  • 배열 초기화 하기 전에 차원 하지 않았습니다.You've forgotten to dimension an array before initializing it. 다음 예에서 values 정수 배열로 선언 됩니다 하지만 포함 된 요소 수가 지정 되지 않습니다.In the following example, values is declared to be an integer array, but the number of elements that it contains is never specified. 발생 하므로 해당 값을 초기화 하려는 시도 NullReferenceException 예외입니다.The attempt to initialize its values therefore thrown a NullReferenceException exception.

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

    다음 예제와 같이 배열의 요소 수를 초기화 하기 전에 선언 하 여 예외를 제거할 수 있습니다.You can eliminate the exception by declaring the number of elements in the array before initializing it, as the following example does.

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

    선언 하 고 배열 초기화에 대 한 자세한 내용은 참조 하세요. 배열을 하 고 배열합니다.For more information on declaring and initializing arrays, see Arrays and Arrays.

  • 표시 된 null 메서드에서 값을 반환 하 고 다음 반환 된 형식에서 메서드를 호출 합니다.You get a null return value from a method, and then call a method on the returned type. 이 경우에 따라 결과인 설명서 오류입니다. 설명서가 메서드 호출을 반환할 수 못했습니다 null합니다.This sometimes is the result of a documentation error; the documentation fails to note that a method call can return null. 다른 경우에 코드 잘못 가정 하는 메서드는 항상 반환 이외null 값입니다.In other cases, your code erroneously assumes that the method will always return a non-null value.

    다음 예제에서 코드를 가정 합니다 Array.Find 메서드는 항상 반환 Person 개체 FirstName 필드 검색 문자열과 일치 합니다.The code in the following example assumes that the Array.Find method always returns Person object whose FirstName field matches a search string. 일치 하는 항목에 있기 때문에 런타임에서 throw 된 NullReferenceException 예외입니다.Because there is no match, the runtime throws a NullReferenceException exception.

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

    이 문제를 해결 하기 위해 있다는 것을 확인 하는 메서드의 반환 값을 테스트 null 를 호출 하기 전에 모든 해당 멤버의 다음 예제와 같이 합니다.To address this problem, test the method's return value to ensure that it is not null before calling any of its members, as the following example does.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          Person[] persons = Person.AddRange( new String[] { "Abigail", "Abra", 
                                              "Abraham", "Adrian", "Ariella", 
                                              "Arnold", "Aston", "Astor" } );    
          String nameToFind = "Robert";
          Person found = Array.Find(persons, p => p.FirstName == nameToFind);
          if (found != null)
             Console.WriteLine(found.FirstName);
          else
             Console.WriteLine("{0} not found.", nameToFind);   
       }
    }
    
    public class Person
    {
       public static Person[] AddRange(String[] firstNames) 
       {
          Person[] p = new Person[firstNames.Length];
          for (int ctr = 0; ctr < firstNames.Length; ctr++)
             p[ctr] = new Person(firstNames[ctr]);
    
          return p;
       }
       
       public Person(String firstName)
       {
          this.FirstName = firstName;
       } 
       
       public String FirstName;
    }
    // The example displays the following output:
    //        Robert not found
    
    Module Example
       Public Sub Main()
          Dim persons() As Person = Person.AddRange( { "Abigail", "Abra",
                                                       "Abraham", "Adrian",
                                                       "Ariella", "Arnold", 
                                                       "Aston", "Astor" } )    
          Dim nameToFind As String = "Robert"
          Dim found As Person = Array.Find(persons, Function(p) p.FirstName = nameToFind)
          If found IsNot Nothing Then
             Console.WriteLine(found.FirstName)
          Else
             Console.WriteLine("{0} not found.", nameToFind)
          End If   
       End Sub
    End Module
    
    Public Class Person
       Public Shared Function AddRange(firstNames() As String) As Person()
          Dim p(firstNames.Length - 1) As Person
          For ctr As Integer = 0 To firstNames.Length - 1
             p(ctr) = New Person(firstNames(ctr))
          Next   
          Return p
       End Function
       
       Public Sub New(firstName As String)
          Me.FirstName = firstName
       End Sub 
       
       Public FirstName As String
    End Class
    ' The example displays the following output:
    '       Robert not found
    
  • 식을 사용 하는 (예를 들어 연결 메서드 또는 속성의 목록을 함께) 값을 검색 하 고 값이 있는지 여부를 확인 하 고 있지만 null, 런타임에서 계속 throw를 NullReferenceException 예외.You're using an expression (for example, you're chaining a list of methods or properties together) to retrieve a value and, although you're checking whether the value is null, the runtime still throws a NullReferenceException exception. 식의 중간 값 중 하나를 반환 하기 때문에 이런 null합니다.This occurs because one of the intermediate values in the expression returns null. 따라서에 대 한 null 테스트가 평가 되지 않습니다.As a result, your test for null is never evaluated.

    다음 예제에서는 정의 Pages 에서 제공 되는 웹 페이지에 대 한 정보를 캐시 하는 개체 Page 개체입니다.The following example defines a Pages object that caches information about web pages, which are presented by Page objects. Example.Main 있는지 여부를 현재 웹 페이지에 null이 아닌 제목이,이 경우 제목을 표시 하는 메서드를 확인 합니다.The Example.Main method checks whether the current web page has a non-null title and, if it does, displays the title. 하지만 메서드에서 throw이 검사에도 불구 하 고는 NullReferenceException 예외입니다.Despite this check, however, the method throws a NullReferenceException exception.

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

    때문에 예외가 throw 됩니다 pages.CurrentPage 반환 null 페이지 정보가 없는 캐시에 저장 된 경우.The exception is thrown because pages.CurrentPage returns null if no page information is stored in the cache. 값을 테스트 하 여이 예외를 수정할 수 있습니다 합니다 CurrentPage 현재 검색 하기 전에 속성 Page 개체의 Title 속성을 다음 예제와 같이 않습니다:This exception can be corrected by testing the value of the CurrentPage property before retrieving the current Page object's Title property, as the following example does:

    using System;
    
    public class Example
    {
       public static void Main()
       {
          var pages = new Pages();
          Page current = pages.CurrentPage;
          if (current != null) {  
             String title = current.Title;
             Console.WriteLine("Current title: '{0}'", title);
          }
          else {
             Console.WriteLine("There is no page information in the cache.");
          }   
       }
    }
    // The example displays the following output:
    //       There is no page information in the cache.
    
    Module Example
       Public Sub Main()
          Dim pages As New Pages()
          Dim current As Page = pages.CurrentPage
          If current IsNot Nothing Then 
             Dim title As String = current.Title
             Console.WriteLine("Current title: '{0}'", title)
          Else
             Console.WriteLine("There is no page information in the cache.")
          End If   
       End Sub
    End Module
    ' The example displays the following output:
    '       There is no page information in the cache.
    
  • 참조 형식 및 요소 중 하나를 throw 하는 프로세스 시도 포함 하는 배열의 요소를 열거 하는 NullReferenceException 예외입니다.You're enumerating the elements of an array that contains reference types, and your attempt to process one of the elements throws a NullReferenceException exception.

    다음 예제에서는 문자열 배열을 정의 합니다.The following example defines a string array. A for 문이 배열의 요소를 열거 하 고 각 문자열의 호출 Trim 메서드 문자열을 표시 하기 전에 합니다.A for statement enumerates the elements in the array and calls each string's Trim method before displaying the string.

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

    배열의 각 요소는 null이 아닌 값이 있어야 합니다. 하 고 배열 요소의 값이 실제로 가정 하는 경우이 예외가 발생 null합니다.This exception occurs if you assume that each element of the array must contain a non-null value, and the value of the array element is in fact null. 요소 인지 여부를 테스트 하 여 예외를 제거할 수 있습니다 null 요소에 대 한 작업을 수행 하기 전에 다음 예제와 같이 보여 줍니다.The exception can be eliminated by testing whether the element is null before performing any operation on that element, as the following example shows.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          String[] values = { "one", null, "two" };
          for (int ctr = 0; ctr <= values.GetUpperBound(0); ctr++)
             Console.Write("{0}{1}", 
                           values[ctr] != null ? values[ctr].Trim() : "", 
                           ctr == values.GetUpperBound(0) ? "" : ", "); 
          Console.WriteLine();
       }
    }
    // The example displays the following output:
    //       one, , two
    
    Module Example
       Public Sub Main()
          Dim values() As String = { "one", Nothing, "two" }
          For ctr As Integer = 0 To values.GetUpperBound(0)
             Console.Write("{0}{1}", 
                           If(values(ctr) IsNot Nothing, values(ctr).Trim(), ""), 
                           If(ctr = values.GetUpperBound(0), "", ", ")) 
          Next
          Console.WriteLine()
       End Sub
    End Module
    ' The example displays the following output:
    '       one, , two
    
  • A NullReferenceException 전달 되는 메서드에서 예외가 null합니다.A NullReferenceException exception is thrown by a method that is passed null. 일부 메서드는 전달 되는 인수를 확인 합니다.Some methods validate the arguments that are passed to them. 경우는 인수 중 하나가 null, 메서드가 throw는 System.ArgumentNullException 예외입니다.If they do and one of the arguments is null, the method throws an System.ArgumentNullException exception. 그렇지 않으면 throw 된 NullReferenceException 예외입니다.Otherwise, it throws a NullReferenceException exception. 다음 예제에서는이 시나리오를 보여 줍니다.The following example illustrates this scenario.

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

    이 문제를 해결 하려면 메서드에 전달 된 인수가 없습니다 인지 확인 null에서 throw 된 예외를 처리 하는 또는 try…catch…finally 블록입니다.To address this issue, make sure that the argument passed to the method is not null, or handle the thrown exception in a try…catch…finally block. 자세한 내용은 예외에 정의된 인터페이스의 private C++ 관련 구현입니다.For more information, see Exceptions.

다음 Microsoft intermediate language (MSIL) 명령의 throw NullReferenceException: callvirt, cpblk, cpobj, initblkldelem.<type>, ldelema, ldfld, ldflda, ldind.<type>ldlen, stelem.<type>stfld, stind.<type>throw, 및 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 값 0x80004003 HRESULT COR_E_NULLREFERENCE를 사용 합니다.NullReferenceException uses the HRESULT COR_E_NULLREFERENCE, which has the value 0x80004003.

인스턴스의 초기 속성 값의 목록을 NullReferenceException, 참조는 NullReferenceException 생성자입니다.For a list of initial property values for an instance of NullReferenceException, see the NullReferenceException constructors.

릴리스 코드에서 NullReferenceException 처리Handling NullReferenceException in release code

일반적으로 발생 후 처리를 보다 nullreferenceexception이 발생을 방지 하는 것이 좋습니다.It's usually better to avoid a NullReferenceException than to handle it after it occurs. 예외 처리로 인해 코드는 유지 관리하고 이해하기가 더 어려워지며 때로는 다른 버그가 발생할 수도 있습니다.Handling an exception can make your code harder to maintain and understand, and can sometimes introduce other bugs. NullReferenceException은 대개 복구할 수 없는 오류입니다.A NullReferenceException is often a non-recoverable error. 이러한 경우 예외로 인해 앱이 중지되도록 하는 것이 최상의 방법일 수 있습니다.In these cases, letting the exception stop the app might be the best alternative.

하지만 오류 처리가 유용한 경우도 많이 있습니다.However, there are many situations where handling the error can be useful:

  • 앱에서 null 개체를 무시할 수 있습니다.Your app can ignore objects that are null. 예를 들어 앱에서 데이터베이스의 레코드를 검색하고 처리하는 경우 null 개체를 발생시키는 잘못된 레코드를 무시할 수 있습니다.For example, if your app retrieves and processes records in a database, you might be able to ignore some number of bad records that result in null objects. 로그 파일이나 애플리케이션 UI에 있는 잘못된 데이터를 기록하기만 하면 됩니다.Recording the bad data in a log file or in the application UI might be all you have to do.

  • 예외에서 복구할 수 있습니다.You can recover from the exception. 예를 들어 참조 형식을 반환하는 웹 서비스에 대한 호출은 연결이 끊어졌거나 연결 시간이 초과된 경우 null을 반환할 수 있습니다. 연결을 다시 설정한 다음 다시 호출할 수 있습니다.For example, a call to a web service that returns a reference type might return null if the connection is lost or the connection times out. You can attempt to reestablish the connection and try the call again.

  • 앱 상태를 올바른 상태로 복원할 수 있습니다.You can restore the state of your app to a valid state. 예를 들어 NullReferenceException을 throw하는 메서드를 호출하기 전에 정보를 데이터 저장소에 저장하도록 하는 다단계 작업을 수행할 수 있습니다.For example, you might be performing a multi-step task that requires you to save information to a data store before you call a method that throws a NullReferenceException. 초기화되지 않은 개체로 인해 데이터 레코드가 손상될 경우 앱을 종료하기 전에 이전 데이터를 제거할 수 있습니다.If the uninitialized object would corrupt the data record, you can remove the previous data before you close the app.

  • 그리고 예외 보고를 원할 수 있습니다.You want to report the exception. 예를 들어 앱 사용자의 실수로 오류가 발생한 경우 사용자가 올바른 정보를 제공할 수 있도록 도와 주는 메시지를 생성할 수 있습니다.For example, if the error was caused by a mistake from the user of your app, you can generate a message to help him supply the correct information. 문제를 해결할 수 있도록 오류에 대한 정보를 기록할 수도 있습니다.You can also log information about the error to help you fix the problem. ASP.NET과 같은 일부 프레임워크에는 앱이 충돌하지 않도록 모든 오류를 캡처하는 수준 높은 예외 처리기가 포함되어 있습니다. 이러한 경우 예외 발생 여부를 확인할 수 있는 방법은 예외를 로깅하는 것뿐입니다.Some frameworks, like ASP.NET, have a high-level exception handler that captures all errors to that the app never crashes; in that case, logging the exception might be the only way you can know that it occurs.

생성자

NullReferenceException()

NullReferenceException 클래스의 새 인스턴스를 초기화하고, 새 인스턴스의 Message 속성을 오류를 설명하는 시스템 제공 메시지(예: "개체 인스턴스가 있어야 하는 곳에 'null' 값이 있습니다.")로 설정합니다.Initializes a new instance of the NullReferenceException class, setting the Message property of the new instance to a system-supplied message that describes the error, such as "The value 'null' was found where an instance of an object was required." 이 메시지는 현재 시스템의 문화권을 따릅니다.This message takes into account the current system culture.

NullReferenceException(SerializationInfo, StreamingContext)

serialize된 데이터를 사용하여 NullReferenceException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the NullReferenceException class with serialized data.

NullReferenceException(String)

지정된 오류 메시지를 사용하여 NullReferenceException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the NullReferenceException class with a specified error message.

NullReferenceException(String, Exception)

지정된 오류 메시지와 해당 예외의 원인인 내부 예외에 대한 참조를 사용하여 NullReferenceException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the NullReferenceException class with a specified error message and a reference to the inner exception that is the cause of this exception.

속성

Data

예외에 대한 사용자 정의 추가 정보를 제공하는 키/값 쌍의 컬렉션을 가져옵니다.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(다음에서 상속됨 Exception)
HelpLink

이 예외와 연결된 도움말 파일에 대한 링크를 가져오거나 설정합니다.Gets or sets a link to the help file associated with this exception.

(다음에서 상속됨 Exception)
HResult

특정 예외에 할당된 코드화된 숫자 값인 HRESULT를 가져오거나 설정합니다.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(다음에서 상속됨 Exception)
InnerException

현재 예외를 발생시킨 Exception 인스턴스를 가져옵니다.Gets the Exception instance that caused the current exception.

(다음에서 상속됨 Exception)
Message

현재 예외를 설명하는 메시지를 가져옵니다.Gets a message that describes the current exception.

(다음에서 상속됨 Exception)
Source

오류를 발생시키는 애플리케이션 또는 개체의 이름을 가져오거나 설정합니다.Gets or sets the name of the application or the object that causes the error.

(다음에서 상속됨 Exception)
StackTrace

호출 스택의 직접 실행 프레임에 대한 문자열 표현을 가져옵니다.Gets a string representation of the immediate frames on the call stack.

(다음에서 상속됨 Exception)
TargetSite

현재 예외를 throw하는 메서드를 가져옵니다.Gets the method that throws the current exception.

(다음에서 상속됨 Exception)

메서드

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
GetBaseException()

파생 클래스에서 재정의되었을 때, 하나 이상의 후속 예외의 근본 원인이 되는 Exception을 반환합니다.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(다음에서 상속됨 Exception)
GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetObjectData(SerializationInfo, StreamingContext)

파생 클래스에서 재정의될 때, 예외에 관한 정보를 SerializationInfo에 설정합니다.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(다음에서 상속됨 Exception)
GetType()

현재 인스턴스의 런타임 형식을 가져옵니다.Gets the runtime type of the current instance.

(다음에서 상속됨 Exception)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 예외에 대한 문자열 표현을 만들고 반환합니다.Creates and returns a string representation of the current exception.

(다음에서 상속됨 Exception)

이벤트

SerializeObjectState

예외에 대한 serialize된 데이터가 들어 있는 예외 상태 개체가 만들어지도록 예외가 serialize될 때 발생합니다.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(다음에서 상속됨 Exception)

적용 대상

추가 정보