Um eine Pluginschittstelle abzusichern, moechte ich eigendlich alle Zugriffe auf implementierte Methoden mit einem catch-all umgeben. Frage: Hat das irgendwelche Einfluesse auf die Performance? Die meisten der Methoden sind dabei uebrigens durchaus inline-faehig.
On Tue, 31 Aug 2004 11:45:47 +0200, Christoph Happich wrote: > Um eine Pluginschittstelle abzusichern, moechte ich eigendlich alle > Zugriffe auf implementierte Methoden mit einem catch-all umgeben. > Frage: Hat das irgendwelche Einfluesse auf die Performance? Die meisten > der Methoden sind dabei uebrigens durchaus inline-faehig.
Solange keine Exception geworfen wird, ist der Einfluss genau null. Erst das Erzeugen einer Exception geht dann auf die Performance.
Lothar Kimmeringer wrote: > On Tue, 31 Aug 2004 11:45:47 +0200, Christoph Happich wrote:
>>Um eine Pluginschittstelle abzusichern, moechte ich eigendlich alle >>Zugriffe auf implementierte Methoden mit einem catch-all umgeben. >>Frage: Hat das irgendwelche Einfluesse auf die Performance? Die meisten >>der Methoden sind dabei uebrigens durchaus inline-faehig.
> Solange keine Exception geworfen wird, ist der Einfluss > genau null. Erst das Erzeugen einer Exception geht dann > auf die Performance.
> Um eine Pluginschittstelle abzusichern, moechte ich eigendlich alle > Zugriffe auf implementierte Methoden mit einem catch-all umgeben. > Frage: Hat das irgendwelche Einfluesse auf die Performance? Die meisten > der Methoden sind dabei uebrigens durchaus inline-faehig.
ich vermute hinter der Frage einen Denkfehler. Du denkst es gäbe Methoden die keine Exception werfen können. In Java kann _jede_ Methode eine Exception werfen, z.B. RuntimExceptions oder Errors. D.h. beim Aufruf einer Methode findet _immer_ eine Überprüfung auf eine geworfenen Exception statt. Natürlich werden - wenn keine Exception vorliegt - die ganzen catch-Blöcke übersprungen, und daher gibt es auch keinen Performanceverlust wie Lothar schon schrieb.
On Tue, 31 Aug 2004 20:38:13 +0200, Sven Köhler wrote: > In Java kann _jede_ Methode > eine Exception werfen, z.B. RuntimExceptions oder Errors. D.h. beim > Aufruf einer Methode findet _immer_ eine Überprüfung auf eine geworfenen > Exception statt.
Es ist genau anders herum. Wenn eine Exception geworfen, wird ueberprueft, ob dies innerhalb eines catch-Block passierte. Ist das nicht der Fall, wird die gleiche Ueberpruefung in der aufrufenden Methode vorgenommen, usw. bis man "ganz oben" ankommt und man bekannten Stacktrace auf der Konsole praesentiert bekommt und die Applikation beendet wird.
>>In Java kann _jede_ Methode >>eine Exception werfen, z.B. RuntimExceptions oder Errors. D.h. beim >>Aufruf einer Methode findet _immer_ eine Überprüfung auf eine geworfenen >>Exception statt.
> Es ist genau anders herum. Wenn eine Exception geworfen, wird > ueberprueft, ob dies innerhalb eines catch-Block passierte. > Ist das nicht der Fall, wird die gleiche Ueberpruefung in > der aufrufenden Methode vorgenommen, usw. bis man "ganz > oben" ankommt und man bekannten Stacktrace auf der Konsole > praesentiert bekommt und die Applikation beendet wird.