Habe mir einen mathematischen Parser geschrieben, in dem man auch Funktion definieren und (wenn man will) rekursiv aufrufen kann. Dabei kommt es relativ rasch zu einem StackOverflow. Natürlich mochte ich dann auch in der Konsole einen Stack Overflow melden, also muß ich den Overflow per catch abfangen und entsprechend behandeln.
Theoretisch sollten Error-Objekte wie StackOverflow "throwable" sein, allerdings scheint der catch-Block ignoriert zu werden.
Die Javainsel schreibt dazu:
"Da die Fehler »abnormales« Verhalten anzeigen, müssen sie auch nicht mit einem try/catch-Block aufgefangen werden. Allerdings ist es möglich, die Fehler mit einem try/catch aufzufangen, da Error-Klassen Unterklassen von Throwable sind und sich daher genauso verhalten. In sofern ist ein Auffangen legitim und auch ein finally ist korrekt."
Warum geht das in der Praxis aber trotzdem nicht?
Theoretisch sollten Error-Objekte wie StackOverflow "throwable" sein, allerdings scheint der catch-Block ignoriert zu werden.
Die Javainsel schreibt dazu:
"Da die Fehler »abnormales« Verhalten anzeigen, müssen sie auch nicht mit einem try/catch-Block aufgefangen werden. Allerdings ist es möglich, die Fehler mit einem try/catch aufzufangen, da Error-Klassen Unterklassen von Throwable sind und sich daher genauso verhalten. In sofern ist ein Auffangen legitim und auch ein finally ist korrekt."
Warum geht das in der Praxis aber trotzdem nicht?