Denis Koroskin wrote:
On Wed, 28 Oct 2009 00:21:47 +0300, grauzone <n...@example.net> wrote:

BCS wrote:
Hello grauzone,

PS: I wonder, should the runtime really execute finally blocks if an
"Error" exception is thrown? (Errors are for runtime errors, Exception
for normal exceptions.) Isn't it dangerous to execute arbitrary user
code in presence of what is basically an internal error?

If a thrown Error doesn't run finally blocks you will have a very hard time arguing for catch working and once those don't happen it might as well kill -9 the process so why even have it in the first place?

You still can use a "catch (Throwable t)" to catch all kinds of errors. I just think that finally (and scope(exit)) should be designed with high level code in mind. Code that allocates heap memory in a finally block is already broken (what if an out of memory error was thrown?).

I've seen code that has throws new OutOfMemoryException(__FILE__, __LINE__); when malloc (or other allocation mechanism) has failed, and it always make me smile.

Maybe the GC should reserve a small amount of space (~1KB) for its exceptions, when memory is tight.

Reply via email to