NullReferenceException Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
De uitzondering die wordt gegenereerd wanneer er een poging is om een null-objectverwijzing te deducteren.
public ref class NullReferenceException : Exception
public ref class NullReferenceException : SystemException
public class NullReferenceException : Exception
[System.Serializable]
public class NullReferenceException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class NullReferenceException : SystemException
public class NullReferenceException : SystemException
type NullReferenceException = class
inherit Exception
[<System.Serializable>]
type NullReferenceException = class
inherit SystemException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type NullReferenceException = class
inherit SystemException
type NullReferenceException = class
inherit SystemException
Public Class NullReferenceException
Inherits Exception
Public Class NullReferenceException
Inherits SystemException
- Overname
- Overname
- Kenmerken
Opmerkingen
Er wordt een NullReferenceException uitzondering gegenereerd wanneer u probeert toegang te krijgen tot een lid op een type waarvan de waarde is null. Een NullReferenceException uitzondering weerspiegelt doorgaans de fout van de ontwikkelaar en wordt gegenereerd in de volgende scenario's:
Note
U kunt de meeste NullReferenceException uitzonderingen in C# voorkomen met behulp van de operator null-conditional (?.) of de operator null-coalescing (??). Voor meer informatie, zie Nullbare referentietypen. In de volgende C#-voorbeelden wordt ervan uitgegaan dat de null-context is uitgeschakeld (niet aanbevolen).
U bent vergeten een verwijzingstype te instantiëren. In het volgende voorbeeld wordt gedeclareerd maar nooit geïnstantieerd (de betrokken regel wordt in het C#-voorbeeld
namesweergegeven, omdat deze niet wordt gecompileerd):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()Sommige compilers geven een waarschuwing wanneer ze deze code compileren. Anderen geven een fout en de compilatie mislukt. U kunt dit probleem oplossen door het object te instantiëren zodat de waarde niet meer
nullis. In het volgende voorbeeld wordt dit uitgevoerd door de klasseconstructor van een type aan te roepen.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 ModuleU bent vergeten een matrix te dimensien voordat u deze initialiseert. In het volgende voorbeeld
valueswordt gedeclareerd als een matrix met gehele getallen, maar het aantal elementen dat deze bevat, wordt nooit opgegeven. De poging om de waarden te initialiseren genereert daarom een NullReferenceException uitzondering.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()U kunt de uitzondering elimineren door het aantal elementen in de matrix te declareren voordat u deze initialiseert, zoals in het volgende voorbeeld.
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 ' 18Zie Matrices en matrices voor meer informatie over het declareren en initialiseren van matrices.
U krijgt een null-retourwaarde van een methode en roept vervolgens een methode aan op het geretourneerde type. Dit is soms het resultaat van een documentatiefout; in de documentatie kan niet worden opgemerkt dat een methode-aanroep kan worden geretourneerd
null. In andere gevallen gaat uw code er ten onrechte van uit dat de methode altijd een niet-null-waarde retourneert.In de code in het volgende voorbeeld wordt ervan uitgegaan dat de methode altijd een object retourneert
PersonwaarvanFirstNamehet Array.Find veld overeenkomt met een zoektekenreeks. Omdat er geen overeenkomst is, genereert de runtime een NullReferenceException uitzondering.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()Als u dit probleem wilt oplossen, test u de retourwaarde van de methode om ervoor te zorgen dat deze niet
nullvoordat u een van de leden aanroept, zoals in het volgende voorbeeld het geval is.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 foundU gebruikt een expressie (u hebt bijvoorbeeld een lijst met methoden of eigenschappen gekoppeld) om een waarde op te halen en, hoewel u controleert of de waarde is
null, genereert de runtime nog steeds een NullReferenceException uitzondering. Dit komt doordat een van de tussenliggende waarden in de expressie retourneertnull. Als gevolg hiervan wordt uw testnullnooit geëvalueerd.In het volgende voorbeeld wordt een
Pagesobject gedefinieerd waarin informatie over webpagina's in de cache wordt opgeslagen, die worden weergegeven doorPageobjecten. DeExample.Mainmethode controleert of de huidige webpagina een niet-null-titel heeft en, als dit het geval is, wordt de titel weergegeven. Ondanks deze controle genereert de methode echter een NullReferenceException uitzondering.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()De uitzondering wordt gegenereerd omdat
pages.CurrentPageretourneertnullals er geen pagina-informatie wordt opgeslagen in de cache. Deze uitzondering kan worden gecorrigeerd door de waarde van deCurrentPageeigenschap te testen voordat de eigenschap vanTitlehet huidigePageobject wordt opgehaald, zoals in het volgende voorbeeld: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.U inventariseert de elementen van een matrix die verwijzingstypen bevat en u probeert een van de elementen te verwerken, genereert een NullReferenceException uitzondering.
In het volgende voorbeeld wordt een tekenreeksmatrix gedefinieerd. Een
forinstructie bevat een opsomming van de elementen in de matrix en roept de methode van Trim elke tekenreeks aan voordat de tekenreeks wordt weergegeven.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()Deze uitzondering treedt op als u ervan uitgaat dat elk element van de matrix een niet-null-waarde moet bevatten en de waarde van het matrixelement in feite
nullis. De uitzondering kan worden geëlimineerd door te testen of het element plaatsvindt voordat een bewerking op dat element wordtnulluitgevoerd, zoals in het volgende voorbeeld wordt weergegeven.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, , twoEen methode wanneer deze een lid van een van de argumenten opent, maar dat argument is
null. DePopulateNamesmethode in het volgende voorbeeld genereert de uitzondering op de regelnames.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()Als u dit probleem wilt oplossen, moet u ervoor zorgen dat het argument dat aan de methode is doorgegeven, niet
nullis, of de gegenereerde uitzondering in eentry…catch…finallyblok afhandelen. Zie Uitzonderingen voor meer informatie.Er wordt een lijst gemaakt zonder het type te kennen en de lijst is niet geïnitialiseerd. De
GetListmethode in het volgende voorbeeld genereert de uitzondering op de regelemptyList.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 24Als u dit probleem wilt oplossen, moet u ervoor zorgen dat de lijst is geïnitialiseerd (een manier om dit te doen, is door in plaats van
FormatterServices.GetUninitializedObject) aan te roepenActivator.CreateInstanceof de gegenereerde uitzondering in eentry…catch…finallyblok af te handelen. Zie Uitzonderingen voor meer informatie.
De volgende Microsoft tussentaalinstructies (MSIL) gooien NullReferenceException: callvirt, cpblk, cpobj, initblk, ldelem.<type>, ldelema, ldfld, ldflda, ldind.<type>, ldlen, stelem.<type>, stfld, stind.<type>, throw en unbox.
NullReferenceException maakt gebruik van HRESULT COR_E_NULLREFERENCE, met de waarde 0x80004003.
Voor een lijst van initiële eigenschapswaarden voor een exemplaar van NullReferenceException, zie de NullReferenceException-constructoren.
Wanneer moet u NullReferenceException-uitzonderingen verwerken
Het is meestal beter om een NullReferenceException te vermijden dan deze te verwerken nadat deze is opgetreden. Het afhandelen van een uitzondering kan ervoor zorgen dat uw code moeilijker te onderhouden en te begrijpen is en soms andere fouten kan veroorzaken. Een NullReferenceException is vaak een niet-herstelbare fout. In dergelijke gevallen is het het beste alternatief om de uitzondering te stoppen met de app.
Er zijn echter veel situaties waarin het verwerken van de fout nuttig kan zijn:
Uw app kan objecten negeren die null zijn. Als uw app bijvoorbeeld records in een database ophaalt en verwerkt, kunt u mogelijk een aantal ongeldige records negeren die resulteren in null-objecten. Het vastleggen van de slechte gegevens in een logboekbestand of in de gebruikersinterface van de toepassing is mogelijk alles wat u moet doen.
U kunt herstellen van de uitzondering. Een aanroep naar een webservice die een verwijzingstype retourneert, kan bijvoorbeeld null retourneren als de verbinding is verbroken of als er een time-out optreedt voor de verbinding. U kunt proberen de verbinding opnieuw tot stand te gebracht en de aanroep opnieuw uit te voeren.
U kunt de status van uw app herstellen naar een geldige status. U kunt bijvoorbeeld een taak met meerdere stappen uitvoeren waarvoor u gegevens moet opslaan in een gegevensarchief voordat u een methode aanroept waarmee een NullReferenceException wordt gegenereerd. Als het niet-geïnitialiseerde object de gegevensrecord zou beschadigen, kunt u de vorige gegevens verwijderen voordat u de app sluit.
U wilt de uitzondering rapporteren. Als de fout bijvoorbeeld is veroorzaakt door een fout van de gebruiker van uw app, kunt u een bericht genereren om hen te helpen de juiste informatie op te geven. U kunt ook informatie over de fout vastleggen om u te helpen het probleem op te lossen. Sommige frameworks, zoals ASP.NET, hebben een uitzonderingshandler op hoog niveau waarmee alle fouten worden vastgelegd die de app nooit vastloopt. In dat geval is het vastleggen van de uitzondering mogelijk de enige manier waarop u kunt weten dat deze optreedt.
Constructors
| Name | Description |
|---|---|
| NullReferenceException() |
Initialiseert een nieuw exemplaar van de NullReferenceException klasse, waarbij de Message eigenschap van het nieuwe exemplaar wordt ingesteld op een door het systeem opgegeven bericht waarin de fout wordt beschreven, zoals 'De waarde 'null' is gevonden waar een exemplaar van een object is vereist.' Dit bericht houdt rekening met de huidige systeemcultuur. |
| NullReferenceException(SerializationInfo, StreamingContext) |
Initialiseert een nieuw exemplaar van de NullReferenceException klasse met geserialiseerde gegevens. |
| NullReferenceException(String, Exception) |
Initialiseert een nieuw exemplaar van de NullReferenceException klasse met een opgegeven foutbericht en een verwijzing naar de binnenste uitzondering die de oorzaak van deze uitzondering is. |
| NullReferenceException(String) |
Initialiseert een nieuw exemplaar van de NullReferenceException klasse met een opgegeven foutbericht. |
Eigenschappen
| Name | Description |
|---|---|
| Data |
Hiermee haalt u een verzameling sleutel-waardeparen op die aanvullende door de gebruiker gedefinieerde informatie over de uitzondering bieden. (Overgenomen van Exception) |
| HelpLink |
Hiermee haalt u een koppeling op naar het Help-bestand dat aan deze uitzondering is gekoppeld. (Overgenomen van Exception) |
| HResult |
Hiermee wordt HRESULT opgehaald of ingesteld, een gecodeerde numerieke waarde die is toegewezen aan een specifieke uitzondering. (Overgenomen van Exception) |
| InnerException |
Hiermee haalt u het Exception exemplaar op dat de huidige uitzondering heeft veroorzaakt. (Overgenomen van Exception) |
| Message |
Hiermee wordt een bericht weergegeven waarin de huidige uitzondering wordt beschreven. (Overgenomen van Exception) |
| Source |
Hiermee wordt de naam van de toepassing of het object dat de fout veroorzaakt, opgehaald of ingesteld. (Overgenomen van Exception) |
| StackTrace |
Hiermee haalt u een tekenreeksweergave van de directe frames op de aanroepstack op. (Overgenomen van Exception) |
| TargetSite |
Hiermee haalt u de methode op waarmee de huidige uitzondering wordt gegenereerd. (Overgenomen van Exception) |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetBaseException() |
Wanneer deze wordt overschreven in een afgeleide klasse, retourneert u de Exception hoofdoorzaak van een of meer volgende uitzonderingen. (Overgenomen van Exception) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Wanneer deze wordt overschreven in een afgeleide klasse, stelt u de SerializationInfo met informatie over de uitzondering in. (Overgenomen van Exception) |
| GetType() |
Hiermee haalt u het runtimetype van het huidige exemplaar op. (Overgenomen van Exception) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Hiermee maakt en retourneert u een tekenreeksweergave van de huidige uitzondering. (Overgenomen van Exception) |
gebeurtenis
| Name | Description |
|---|---|
| SerializeObjectState |
Treedt op wanneer een uitzondering wordt geserialiseerd om een uitzonderingsstatusobject te maken dat geserialiseerde gegevens over de uitzondering bevat. (Overgenomen van Exception) |