NullReferenceException lässt sich nicht abfangen

  • C#

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Weil Du beim Debuggen bist. Du kannst einstellen, dass das ignoriert werden soll. Aber sowas lässt sich ja auch durch eine einfache If-Abfrage abfangen. Ganz ohne try-catch.

    ##########

    Also: zuerst mit If schauen, ob myXmlNode2 null ist, dann myXmlNode2.Attributes["pos"], …
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Du setzt einen Haken an der Stelle, siehe Post#1, Screenshot: [ ] Ausgenommen, wenn ausgelöst von
    Ehm … wenn Du schreibst: if (myXmlNode2 == null);, dann kommt ne Exception?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Sach ich doch:

    VaporiZed schrieb:

    Also: zuerst mit If schauen, ob myXmlNode2 null ist, dann myXmlNode2.Attributes["pos"], …
    Daher: Wenn Du per If weißt, dass myXmlNode2.Attributes["pos"] null ist, kannst Du an der Stelle die Codeverarbeitung abbrechen und brauchst kein Try-Catch.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ich mach mal vor, wies geht:

    C#-Quellcode

    1. private static void XmlTest() {
    2. var xdoc = new XmlDocument(); xdoc.LoadXml("<blaBlub/>");
    3. XmlNode myXmlNode2 = xdoc.DocumentElement;
    4. var test = myXmlNode2.Attributes["pos"]?.Value;
    5. xdoc.LoadXml("<blaBlub pos=\"987\"/>");
    6. myXmlNode2 = xdoc.DocumentElement;
    7. test = myXmlNode2.Attributes["pos"]?.Value;
    8. if (test == null) { /*lieber nicht*/}
    9. }
    in #4 kommt test als string oder null raus - das kannste leicht testen.
    Wurde schon gesagt: Zu tryCatchen gibts da nix.

    Hintergrund ist, dass .Attributes[name] keine Exception wirft, wenn das Attribut nicht da ist.
    Sondern es returnt null.
    Davon wiederum kann man mit dem ?.-Operator problemlos den Value abfragen (returnt im Zweifelsfall ebenfalls null), und so kommt man mit sehr wenig Code zum gesuchten Ergebnis.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Vollzitat eines Vorposts durch Anredefunktion ersetzt ~VaporiZed
    @VaporiZed:
    Ganz ehrlich Leute, ich weiß nicht wo mir der Kopf steht...
    Ich hatte die Abfrage

    C#-Quellcode

    1. if (myXmlNode2.Attributes["pos"] != null)
    schon drin. Funktioniert auch. Ich blicke nicht mehr durch, weiß schon gar nicht mehr welches Problem ich hatte. Ich muss morgen in Ruhe nochmal gucken.

    Trotzdem Danke

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @Humax Im Post #8 vom @ErfinderDesRades kommen in den Zeilen 4 und 8 ? vor.
    Informiere Dich mal über deren Bedeutung, probiere es einfach aus.
    Übe Dich gleich im Debuggen:
    Debuggen, Fehler finden und beseitigen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!