NullReferenceException Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Pengecualian yang dilemparkan ketika ada upaya untuk mendereferensikan referensi objek null.
public ref class NullReferenceException : Exception
public ref class NullReferenceException : SystemException
public class NullReferenceException : Exception
public class NullReferenceException : SystemException
[System.Serializable]
public class NullReferenceException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class NullReferenceException : SystemException
type NullReferenceException = class
inherit Exception
type NullReferenceException = class
inherit SystemException
[<System.Serializable>]
type NullReferenceException = class
inherit SystemException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type NullReferenceException = class
inherit SystemException
Public Class NullReferenceException
Inherits Exception
Public Class NullReferenceException
Inherits SystemException
- Warisan
- Warisan
- Atribut
Keterangan
Pengecualian NullReferenceException dilemparkan ketika Anda mencoba mengakses anggota pada jenis yang nilainya adalah null.
NullReferenceException Pengecualian biasanya mencerminkan kesalahan pengembang dan dilemparkan dalam skenario berikut:
Note
Anda dapat menghindari sebagian besar NullReferenceException pengecualian di C# dengan menggunakan operator null-conditional (?.) atau operator null-coalescing (??). Untuk informasi selengkapnya, lihat Tipe referensi yang dapat bernilai null. Contoh C# berikut mengasumsikan konteks nullable dinonaktifkan (tidak disarankan).
Anda lupa membuat instans jenis referensi. Dalam contoh berikut,
namesdinyatakan tetapi tidak pernah dibuat (baris yang terpengaruh dikomentari dalam contoh C# karena tidak dikompilasi):using System.Collections.Generic; public class UseBeforeAssignExample { public static void Main(string[] args) { int value = int.Parse(args[0]); List<string> names; if (value > 0) names = []; //names.Add("Major Major Major"); } } // Compilation displays a warning like the following: // 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 UseBeforeAssignExample.Main()open System [<EntryPoint>] let main args = let value = Int32.Parse args[0] // Set names to null, don't initialize it. let mutable names = Unchecked.defaultof<ResizeArray<string>> if value > 0 then names <- ResizeArray() names.Add "Major Major Major" 0 // Compilation does not display a warning as this is an extremely rare occurance in F#. // Creating a value without initalizing either requires using 'null' (not possible // on types defined in F# without [<AllowNullLiteral>]) or Unchecked.defaultof. // // 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()Beberapa kompilator mengeluarkan peringatan saat mengkompilasi kode ini. Lainnya mengeluarkan kesalahan, dan kompilasi gagal. Untuk mengatasi masalah ini, buat instans objek sehingga nilainya tidak lagi
null. Contoh berikut melakukan ini dengan memanggil konstruktor kelas jenis.using System.Collections.Generic; public class AnotherExample { public static void Main() { List<string> names = ["Major Major Major"]; } }let names = ResizeArray() 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 ModuleAnda lupa membuat dimensi array sebelum menginisialisasinya. Dalam contoh berikut,
valuesdinyatakan sebagai array bilangan bulat, tetapi jumlah elemen yang dikandungnya tidak pernah ditentukan. Oleh karena itu, upaya untuk menginisialisasi nilai-nilainya melemparkan NullReferenceException pengecualian.int[] values = null; for (int ctr = 0; ctr <= 9; ctr++) values[ctr] = ctr * 2; foreach (int 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 Array3Example.Main()let values: int[] = null for i = 0 to 9 do values[i] <- i * 2 for value in values do printfn $"{value}" // The example displays the following output: // Unhandled Exception: // System.NullReferenceException: Object reference not set to an instance of an object. // at <StartupCode$fs>.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()Anda dapat menghilangkan pengecualian dengan mendeklarasikan jumlah elemen dalam array sebelum menginisialisasinya, seperti contoh berikut.
int[] values = new int[10]; for (int ctr = 0; ctr <= 9; ctr++) values[ctr] = ctr * 2; foreach (int value in values) Console.WriteLine(value); // The example displays the following output: // 0 // 2 // 4 // 6 // 8 // 10 // 12 // 14 // 16 // 18let values = Array.zeroCreate<int> 10 for i = 0 to 9 do values[i] <- i * 2 for value in values do printfn $"{value}" // The example displays the following output: // 0 // 2 // 4 // 6 // 8 // 10 // 12 // 14 // 16 // 18Module 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 ' 18Untuk informasi selengkapnya tentang mendeklarasikan dan menginisialisasi array, lihat Array dan Array.
Anda mendapatkan nilai pengembalian null dari metode, lalu memanggil metode pada jenis yang dikembalikan. Ini kadang-kadang adalah hasil dari kesalahan dokumentasi; dokumentasi gagal dicatat bahwa panggilan metode dapat mengembalikan
null. Dalam kasus lain, kode Anda secara keliru mengasumsikan bahwa metode akan selalu mengembalikan nilai non-null.Kode dalam contoh berikut mengasumsikan bahwa Array.Find metode selalu mengembalikan
Personobjek yang bidangnyaFirstNamecocok dengan string pencarian. Karena tidak ada kecocokan, runtime melempar NullReferenceException pengecualian.public static void NoCheckExample() { Person[] persons = Person.AddRange([ "Abigail", "Abra", "Abraham", "Adrian", "Ariella", "Arnold", "Aston", "Astor" ]); string nameToFind = "Robert"; Person found = Array.Find(persons, p => p.FirstName == nameToFind); Console.WriteLine(found.FirstName); } // The example displays the following output: // Unhandled Exception: System.NullReferenceException: // Object reference not set to an instance of an object.open System type Person(firstName) = member _.FirstName = firstName static member AddRange(firstNames) = Array.map Person firstNames let persons = [| "Abigail"; "Abra"; "Abraham"; "Adrian" "Ariella"; "Arnold"; "Aston"; "Astor" |] |> Person.AddRange let nameToFind = "Robert" let found = Array.Find(persons, fun p -> p.FirstName = nameToFind) printfn $"{found.FirstName}" // The example displays the following output: // Unhandled Exception: System.NullReferenceException: // Object reference not set to an instance of an object. // at <StartupCode$fs>.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()Untuk mengatasi masalah ini, uji nilai pengembalian metode untuk memastikan bahwa itu tidak
nullsebelum memanggil salah satu anggotanya, seperti contoh berikut.public static void ExampleWithNullCheck() { Person[] persons = Person.AddRange([ "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($"'{nameToFind}' not found."); } // The example displays the following output: // 'Robert' not foundopen System [<AllowNullLiteral>] type Person(firstName) = member _.FirstName = firstName static member AddRange(firstNames) = Array.map Person firstNames let persons = [| "Abigail"; "Abra"; "Abraham"; "Adrian" "Ariella"; "Arnold"; "Aston"; "Astor" |] |> Person.AddRange let nameToFind = "Robert" let found = Array.Find(persons, fun p -> p.FirstName = nameToFind) if found <> null then printfn $"{found.FirstName}" else printfn $"{nameToFind} not found." // Using F#'s Array.tryFind function // This does not require a null check or [<AllowNullLiteral>] let found2 = persons |> Array.tryFind (fun p -> p.FirstName = nameToFind) match found2 with | Some firstName -> printfn $"{firstName}" | None -> printfn $"{nameToFind} not found." // The example displays the following output: // Robert not found. // 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 foundAnda menggunakan ekspresi (misalnya, Anda menautkan daftar metode atau properti bersama-sama) untuk mengambil nilai dan, meskipun Anda memeriksa apakah nilainya ,
nullruntime masih melempar NullReferenceException pengecualian. Ini terjadi karena salah satu nilai perantara dalam ekspresi mengembalikannull. Akibatnya, pengujiannullAnda tidak pernah dievaluasi.Contoh berikut menentukan
Pagesobjek yang menyimpan informasi tentang halaman web, yang disajikan olehPageobjek. MetodeExample.Mainini memeriksa apakah halaman web saat ini memiliki judul non-null dan, jika ya, menampilkan judul. Namun, terlepas dari pemeriksaan ini, metode ini melemparkan NullReferenceException pengecualian.public class Chain1Example { public static void Main() { var pages = new Pages(); if (!string.IsNullOrEmpty(pages.CurrentPage.Title)) { string title = pages.CurrentPage.Title; Console.WriteLine($"Current title: '{title}'"); } } } public class Pages { readonly 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] is 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 Chain1Example.Main()open System type Page() = [<DefaultValue>] val mutable public URL: Uri [<DefaultValue>] val mutable public Title: string type Pages() = let pages = Array.zeroCreate<Page> 10 let mutable i = 0 member _.CurrentPage with get () = pages[i] and set (value) = // Move all the page objects down to accommodate the new one. if i > pages.GetUpperBound 0 then for ndx = 1 to pages.GetUpperBound 0 do pages[ndx - 1] <- pages[ndx] pages[i] <- value if i < pages.GetUpperBound 0 then i <- i + 1 member _.PreviousPage = if i = 0 then if box pages[0] = null then Unchecked.defaultof<Page> else pages[0] else i <- i - 1 pages[i + 1] let pages = Pages() if String.IsNullOrEmpty pages.CurrentPage.Title |> not then let title = pages.CurrentPage.Title printfn $"Current title: '{title}'" // The example displays the following output: // Unhandled Exception: // System.NullReferenceException: Object reference not set to an instance of an object. // at <StartupCode$fs>.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()Pengecualian dilemparkan karena
pages.CurrentPagemengembalikannulljika tidak ada informasi halaman yang disimpan dalam cache. Pengecualian ini dapat dikoreksi dengan menguji nilaiCurrentPageproperti sebelum mengambil properti objekTitlesaat iniPage, seperti contoh berikut:var pages = new Pages(); Page current = pages.CurrentPage; if (current != null) { string title = current.Title; Console.WriteLine($"Current title: '{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.let pages = Pages() let current = pages.CurrentPage if box current <> null then let title = current.Title printfn $"Current title: '{title}'" else printfn "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.Anda menghitung elemen array yang berisi jenis referensi, dan upaya Anda untuk memproses salah satu elemen melemparkan NullReferenceException pengecualian.
Contoh berikut mendefinisikan array string.
forPernyataan menghitung elemen dalam array dan memanggil metode setiap string Trim sebelum menampilkan string.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.open System let values = [| "one"; null; "two" |] for i = 0 to values.GetUpperBound 0 do printfn $"""{values[i].Trim()}{if i = values.GetUpperBound 0 then "" else ", "}""" printfn "" // The example displays the following output: // Unhandled Exception: // System.NullReferenceException: Object reference not set to an instance of an object. // at <StartupCode$fs>.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()Pengecualian ini terjadi jika Anda mengasumsikan bahwa setiap elemen array harus berisi nilai non-null, dan nilai elemen array sebenarnya
null. Pengecualian dapat dihilangkan dengan menguji apakah elemen sebelumnullmelakukan operasi apa pun pada elemen tersebut, seperti yang ditunjukkan contoh berikut.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, , twoopen System let values = [| "one"; null; "two" |] for i = 0 to values.GetUpperBound 0 do printf $"""{if values[i] <> null then values[i].Trim() else ""}{if i = values.GetUpperBound 0 then "" else ", "}""" Console.WriteLine() // The example displays the following output: // one, , twoModule 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, , twoMetode saat mengakses anggota salah satu argumennya, tetapi argumen tersebut adalah
null. MetodePopulateNamesdalam contoh berikut melemparkan pengecualian di barisnames.Add(arrName);.using System.Collections.Generic; public class NRE2Example { 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 (string 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 NRE2Example.PopulateNames(List`1 names) // at NRE2Example.Main()let populateNames (names: ResizeArray<string>) = let arrNames = [ "Dakota"; "Samuel"; "Nikita" "Koani"; "Saya"; "Yiska"; "Yumaevsky" ] for arrName in arrNames do names.Add arrName let getData () : ResizeArray<string> = null let names = getData () populateNames names // 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 <StartupCode$fs>.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()Untuk mengatasi masalah ini, pastikan bahwa argumen yang diteruskan ke metode bukan
null, atau tangani pengecualian yangtry…catch…finallydilemparkan dalam blok. Untuk informasi selengkapnya, lihat Pengecualian.Daftar dibuat tanpa mengetahui jenisnya, dan daftar tidak diinisialisasi. Metode
GetListdalam contoh berikut melemparkan pengecualian di barisemptyList.Add(value).using System; using System.Collections.Generic; using System.Collections; using System.Runtime.Serialization; public class NullReferenceExample { public static void Main() { var listType = GetListType(); _ = GetList(listType); } private static Type GetListType() { return typeof(List<int>); } private static IList GetList(Type type) { var emptyList = (IList)FormatterServices.GetUninitializedObject(type); // Does not call list constructor var value = 1; emptyList.Add(value); return emptyList; } } // The example displays output like the following: // Unhandled Exception: System.NullReferenceException: 'Object reference // not set to an instance of an object.' // at System.Collections.Generic.List`1.System.Collections.IList.Add(Object item) // at NullReferenceExample.GetList(Type type): line 24Untuk mengatasi masalah ini, pastikan bahwa daftar diinisialisasi (salah satu cara untuk melakukan ini adalah dengan memanggil
Activator.CreateInstancealih-alihFormatterServices.GetUninitializedObject), atau menangani pengecualian yangtry…catch…finallydilemparkan dalam blok. Untuk informasi selengkapnya, lihat Pengecualian.
Instruksi bahasa perantara (MSIL) Microsoft berikut melemparkan NullReferenceException: callvirt, cpblk, cpobj, initblk, ldelem.<type>, ldelema, ldfld, ldflda, ldind.<type>, ldlen, stelem.<type>, stfld, stind.<type>, throw, dan unbox.
NullReferenceException menggunakan HRESULT COR_E_NULLREFERENCE, yang memiliki nilai 0x80004003.
Untuk daftar nilai properti awal untuk instance NullReferenceException, silakan lihat konstruktor NullReferenceException.
Kapan harus menangani pengecualian NullReferenceException
Biasanya lebih baik untuk menghindari NullReferenceException daripada menanganinya setelah terjadi. Menangani pengecualian dapat membuat kode Anda lebih sulit untuk dipertahankan dan dipahami, dan terkadang dapat memperkenalkan bug lain. NullReferenceException sering kali merupakan kesalahan yang tidak dapat dipulihkan. Dalam kasus ini, membiarkan pengecualian menghentikan aplikasi mungkin menjadi alternatif terbaik.
Namun, ada banyak situasi di mana menangani kesalahan dapat berguna:
Aplikasi Anda dapat mengabaikan objek yang null. Misalnya, jika aplikasi Anda mengambil dan memproses rekaman dalam database, Anda mungkin dapat mengabaikan sejumlah rekaman buruk yang mengakibatkan objek null. Merekam data buruk dalam file log atau di antarmuka pengguna aplikasi mungkin hanya perlu Anda lakukan.
Anda dapat pulih dari pengecualian. Misalnya, panggilan ke layanan web yang mengembalikan jenis referensi mungkin mengembalikan null jika koneksi hilang atau waktu koneksi habis. Anda dapat mencoba membangun kembali koneksi dan mencoba panggilan lagi.
Anda dapat memulihkan status aplikasi ke status yang valid. Misalnya, Anda mungkin melakukan tugas multi-langkah yang mengharuskan Anda menyimpan informasi ke penyimpanan data sebelum Anda memanggil metode yang melempar NullReferenceException. Jika objek yang belum diinisialisasi akan merusak rekaman data, Anda dapat menghapus data sebelumnya sebelum menutup aplikasi.
Anda ingin melaporkan pengecualian. Misalnya, jika kesalahan disebabkan oleh kesalahan dari pengguna aplikasi, Anda dapat membuat pesan untuk membantu mereka memberikan informasi yang benar. Anda juga dapat mencatat informasi tentang kesalahan untuk membantu Anda memperbaiki masalah. Beberapa kerangka kerja, seperti ASP.NET, memiliki handler pengecualian tingkat tinggi yang menangkap semua kesalahan karena aplikasi tidak pernah mengalami crash; dalam hal ini, mencatat pengecualian mungkin satu-satunya cara Anda dapat mengetahui bahwa itu terjadi.
Konstruktor
| Nama | Deskripsi |
|---|---|
| NullReferenceException() |
Menginisialisasi instans NullReferenceException baru kelas, mengatur Message properti instans baru ke pesan yang disediakan sistem yang menjelaskan kesalahan, seperti "Nilai 'null' ditemukan di mana instans objek diperlukan." Pesan ini memperhitungkan budaya sistem saat ini. |
| NullReferenceException(SerializationInfo, StreamingContext) |
Kedaluwarsa.
Menginisialisasi instans NullReferenceException baru kelas dengan data berseri. |
| NullReferenceException(String, Exception) |
Menginisialisasi instans NullReferenceException baru kelas dengan pesan kesalahan tertentu dan referensi ke pengecualian dalam yang merupakan penyebab pengecualian ini. |
| NullReferenceException(String) |
Menginisialisasi instans baru kelas NullReferenceException dengan pesan kesalahan tertentu. |
Properti
| Nama | Deskripsi |
|---|---|
| Data |
Mendapatkan kumpulan pasangan kunci/nilai yang memberikan informasi tambahan yang ditentukan pengguna tentang pengecualian. (Diperoleh dari Exception) |
| HelpLink |
Mendapatkan atau mengatur tautan ke file bantuan yang terkait dengan pengecualian ini. (Diperoleh dari Exception) |
| HResult |
Mendapatkan atau mengatur HRESULT, nilai numerik berkode yang ditetapkan ke pengecualian tertentu. (Diperoleh dari Exception) |
| InnerException |
Mendapatkan instans Exception yang menyebabkan pengecualian saat ini. (Diperoleh dari Exception) |
| Message |
Mendapatkan pesan yang menjelaskan pengecualian saat ini. (Diperoleh dari Exception) |
| Source |
Mendapatkan atau mengatur nama aplikasi atau objek yang menyebabkan kesalahan. (Diperoleh dari Exception) |
| StackTrace |
Mendapatkan representasi string dari bingkai langsung pada tumpukan panggilan. (Diperoleh dari Exception) |
| TargetSite |
Mendapatkan metode yang melemparkan pengecualian saat ini. (Diperoleh dari Exception) |
Metode
| Nama | Deskripsi |
|---|---|
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetBaseException() |
Ketika ditimpa di kelas turunan, mengembalikan Exception yang merupakan akar penyebab dari satu atau beberapa pengecualian berikutnya. (Diperoleh dari Exception) |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Kedaluwarsa.
Saat ditimpa di kelas turunan, mengatur SerializationInfo dengan informasi tentang pengecualian. (Diperoleh dari Exception) |
| GetType() |
Mendapatkan jenis runtime instans saat ini. (Diperoleh dari Exception) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Membuat dan mengembalikan representasi string dari pengecualian saat ini. (Diperoleh dari Exception) |
Acara
| Nama | Deskripsi |
|---|---|
| SerializeObjectState |
Kedaluwarsa.
Terjadi ketika pengecualian diserialisasikan untuk membuat objek status pengecualian yang berisi data berseri tentang pengecualian. (Diperoleh dari Exception) |