Re:Why Java exceptions are slow (and Common Lisp conditions ...
by snprbob86 on Saturday January 17, 2009 @04:29PM
(#438598)
Couldn't [1] be implemented quite simply by some sort of exception handler manager thinggie?
Exception.OnThrown += LogThrownException;
Where this callback has some signature which can examine the stack, locals, and potentially resume?
Re:Why Java exceptions are slow (and Common Lisp conditions ...
by dfox on Saturday January 17, 2009 @06:08PM
(#438726)
By doing this you will get something highly similar to CL's conditions. In CL, there is mechanism similar to Java exceptions (throw/catch/unwind-protect) that is - among other things - used by condition system to actually unwind stack when it determines that is necessary. So you can probably abuse Java exceptions to implement condition system or - more generally - escape continuations.
Problem is that such mechanism has to be used consistently everywhere to be useful. And when you find yourself rewriting standard library, you could well use CL instead of Java.
As noted elsewhere in this discussion, this means that Java exceptions aren't resumable [1] and that a Java exception can't examine all the variables that were alive when the exception was thrown and take action (like: logging) based on the values of those variables [2]. Plus there may be memory-usage implications. All of which are dimensions of suck that are independent of the speed issue.
---
[1] Not that I really know what this means, having never learned a language where this was possible.
[2] This, on the other hand, would be win that I could understand.