Exception Ursprung weitergeben

B

bayeror

Tag!

Ich hab ein Property in dem ich eine Exception auslösen will.
Wenn ich das mache wird mir als "Ursprung" das throw-Statement
angezeigt. z.B.
Code:
throw new System.NullReferenceException();
Ich möchte aber, dass der Aufruf des Properties angezeigt wird, in dem die Exception aus gelöst wurde. z.B.
Code:
if (Items.Count == 0)
(wobei "Count" für dieses Property steht)

Wer kann mir helfen?
 
Du willst also den Stack der Exception sehen? Den kannst dir an der Stelle ansehen, an dem die Exception abgefangen wird. Lass dir einfach die Message ausgeben. Fertig.
 
Du willst also den Stack der Exception sehen? Den kannst dir an der Stelle ansehen, an dem die Exception abgefangen wird. Lass dir einfach die Message ausgeben. Fertig.
Nicht ganz. Ich schreib ein Control. Diese Information vom Ursprung ist nicht für mich sondern für den Entwickler der mein Control einsetzt. Wenn diesem das throw-Statement als Ursache der Exception angezeigt wird, kann der nicht viel damit anfangen. Klar könnte er auch im Stack nachschauen, aber so find ichs genauer, da ich so die Codezeile hab und nicht nur die Funktion.
 
Du kannst der Exception ja eine eigene Message auch mitgeben. Wenn du eine Exception wirfst, muss diese ja auch abgefangen werden.

Was aber der Entwickler mit deinem UserControl macht, wenn du ihm Zeilennummer etc. mitlieferst? Er kann vermutlich daran eh nichts ändern ... mal davon abgesehen, dass du im Stack auch die Zeile drinnen hast :)
 
Du kannst der Exception ja eine eigene Message auch mitgeben. Wenn du eine Exception wirfst, muss diese ja auch abgefangen werden.
weiß ich...

Wir haben eine Web-Applikation. Immer wenn eine Exception auftritt erscheint im Browser eine, vom Framework, automatisch generierte Fehlerseite mit Stack Trace und Fehlerzeile, ... (Weiß nicht wies da bei einer Windows-Applikation ausschaut). Falls eine Exception auftritt, soll diese Fehlerseite möglichst genau sein.
Ich hab mal zwei Beispiel-Bilder für so eine Seite mit angehängt.
Das obere Bild zeigt wie es im Moment aussieht. Das throw-Statement wird als Fehler angezeigt und im Stack Trace muss dann nachgeschaut werden wo das Problem aufgetreten ist.
Das untere Bild zeigt wie die Exception angezeigt werden sollte.

Ich möchte den "Ursprung", weiterschieben, so dass der eigentliche Fehler für die Exception verantwortlich ist und nicht das throw-Statement.
 

Anhänge

  • fehler-ist.JPG
    fehler-ist.JPG
    82 KB · Aufrufe: 41
  • fehler-soll.JPG
    fehler-soll.JPG
    25,6 KB · Aufrufe: 31
Jo und das eine hast du mit try-catch-Block gemacht und das zweite ohne.

Prinzipiell solltest du GAR KEINE Exception anzeigen lassen, sondern diese im Code abfangen.

Den "Ursprung zurücksetzen" kannst du nicht. Ausser du hast eventuell eine InnerException.
 
Norbert Eder hat gesagt.:
Jo und das eine hast du mit try-catch-Block gemacht und das zweite ohne.
Nein. Bei keinen von den Beispielen wird ein try-catch-Block eingesetzt. Im ersten löse ich meine Exception aus. Das zweite zeigt wie die Ursache der Exception angezeigt werden soll (nämlich der Aufruf des Properties/ der Methode und nicht die throw-Anweisung)

Norbert Eder hat gesagt.:
Prinzipiell solltest du GAR KEINE Exception anzeigen lassen, sondern diese im Code abfangen.

Den "Ursprung zurücksetzen" kannst du nicht. Ausser du hast eventuell eine InnerException.
Ich (das Control) löse diese Exception ja überhaupt erst aus. Ich fange keine ab und gib die dann weiter, sondern von mir stammt diese Exception. Ich schmeiße sozusagen die InnerException.
 
Ich würd das sowieso ganz anders machen .. wieso baust dir nicht eigene Exceptions und wirfst die? Dazu eine nette Dokumentation, was was zu bedeuten hat und fertig.
 
Ich würd das sowieso ganz anders machen .. wieso baust dir nicht eigene Exceptions und wirfst die? Dazu eine nette Dokumentation, was was zu bedeuten hat und fertig.
Eine eigene Exception werd ich wahrscheinlich noch schreiben. Das ist doch ein wenig aussagekräftiger als die NullReference.
Aber im jetzigen Problem bringt mich das leider auch nicht weiter.
 
Wenn du auf eine Message antwortest, musst du nicht jedes mal quoten :)

Naja, mein Problem ist, dass ich nicht weiß wo DEIN Problem liegt. Ich weiß nicht was du willst. Das was du oben wolltest geht nicht, das hab ich auch schon geschrieben.
 
Zurück