Try/Catch-block keine Exception fangen
Habe ich eine Anweisung innerhalb eines try - /catch-block, aber die Ausnahme ist, nicht dabei erwischt zu werden. Kann das jemand erklären?
Exception Details:
System.NullReferenceException: Object
reference not set to an instance of an
Objekt.
Quelle Fehler:
Line 139: try
Line 140: {
Line 141: return (int)Session["SelectedLeadID"];
Line 142: }
Line 143: catch (Exception ex)
Update
Dies ist ein ASP.NET -Anwendung. In den catch-block, eine neue Ausnahme geworfen wird. Der code, den Sie sehen, ist, was wird angezeigt, auf der ASP.NET Fehler-Seite.
- Sie haben nicht gezeigt, was im catch-block - gibt es beispielsweise eine "throw;" - Anweisung?
- Zeigen Sie den vollständigen code von try/catch-block
- Ja, im moment ist es einfach wirft die Ausnahme als InnerException-eine neue Exception - logging werden später Hinzugefügt.
- Ich erkennen, das war vor langer Zeit, aber dies ist nicht ein schöner Weg, um dies zu tun, Sie sollten mit Int32.TryParse, die behandeln würde, dass es vielleicht nicht in der Lage sein, den int-Wert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser catch-block fängt die Ausnahme, aber stellen Sie sicher, es gibt keine re-werfen in dort.
Anderen kleinen Kommentar: ich wurde betrogen, schon ein paar mal durch die VS, denn er bricht auf Ausnahmen, wie beispielsweise, dass während der Ausführung im debug-Modus. Versuchen Sie, drücken Sie einfach auf 'weiter' oder 'F5' und sehen, wenn Ihre Anwendung nicht funktioniert sowieso 🙂
Ich vermute, Sie gehen zu müssen, um weitere Details hinzufügen - das ist nicht reproduzierbar einfach aus dem code. Insbesondere (wie bereits erwähnt) würden wir brauchen, um zu sehen im inneren der
catch
, und stellen Sie sicher, dass die Ausnahme tatsächlich ausgelöst wird, von innen dietry
und nicht irgendwo anders.Andere Möglichkeiten:
Dispose()
, die immer genannt (using
etc)Exception
, aber einige andere ObjektWenn es nur der debugger bricht die Ausnahme und Sie sind mit VS2005 oder oben, möchten Sie vielleicht zu prüfen, unter Debug->Ausnahmen..., wenn eine der Common-Language-Runtime-Exceptions aktiviert sind. Wenn dem so ist, wird der debugger immer fangen die Ausnahmen auf den ersten, aber Sie sind erlaubt, um fortzufahren.
Wieder in normale Ausführung, deaktivieren Sie einfach die entsprechenden Ausnahmen von der Liste.
Der code sieht furchtbar hässlich IMO. Für die es etwas sein, was in den catch () - block bedeutet, dass Sie gehen, um eine andere
return ...
Aussage, die AFAIK sollte man immer eine einzige return-Anweisung am Ende jeder Funktion, um folgende Codes zu erleichtern.d.h. vielleicht ist Ihr code Aussehen sollte
Einzelnen Ausspeisepunkten sollen, um den code leichter zu verfolgen, denke ich? Trotzdem, um jede nützliche Hilfe, die Sie posten, um mehr von der Funktion.
leadID
innerhalb des try-Blocks.Verwenden Sie "System.Ausnahme" statt Ausnahme.
catch (System.Exception ex)
Ich hatte das exakt gleiche problem, verursacht durch eine "mit Java.Lang;"
using
ist C#... ich denke, es gibt einige Bibliotheken, die über einen mit einem namespace vonJava.Lang
System.Exception
verwendet wird. Insbesondere dann, wenn alle Klassen generiert, die in C# die erste Zeile vonusing System;