Hallo,
richtig ist, dass man Exceptions dort fangen soll, wo man sie behandeln kann.
Muss man im Fehlerfall noch Aktionen ausführen, will aber trotzdem die "Nachricht", dass ein Fehler aufgetreten ist (bzw. was für ein Fehler) nicht "verlieren", so muss man sie weiterschmeißen. Auf gar keinen Fall sollte man sie irgendwo einfach verschlucken!!
Der gepostete Code macht so keinen Sinn, da Du die Exception ohne eine Aktion weiterschmeißt. Ausserdem sollte man nur den Befehl
throw; verwenden, um den Stacktrace nicht zu verfälschen. Also so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| try { string[] lines = File.ReadAllLines(@"C:\test.txt") } catch(FileNotFoundException) { throw; } |
Zu Deiner eigentlichen Frage: wenn Du die Exception nicht behandelst oder immer weiterschmeißt, so wird sie bis zur obersten Schicht (also der Applikation) durchgereicht.
Nicht vergleichen sollte man Exceptions mit Events. Das sind zwei verschiedene Paar Schuhe (wenn ich mich irgendwie irre, dann bitte berichtigen).
Denn so wie es
pdelvo geschrieben hat hört sich das an, als ob man quasi im Fehlerfall aus einem Objekt ein Event feuert, und auf das Event dann in dem aufrufenden Objekt "horcht", dann vielleicht wieder ein Event feuert... Und was, wenn ein Objekt nicht auf das Event horcht???
Soviel erstmal,
LG,