grauzone wrote:
Christopher Wright wrote:

Please keep full attributions.

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?

Are all Errors unrecoverable except by immediately aborting the application?

What about logging?

What about putting up a reasonable error message for the user?

What about restarting the failed module in case the issue was temporary and environmental?

Something is wrong with your program internally if something like this happens. You can't expect a consistent program state. And most of the code in finally blocks was not written for such situations. You'll probably end up throwing another runtime error from within a finally block.

Quite possibly. But immediately terminating the process is simply not acceptable. How am I going to fix this problem if I can't even log that a problem occurred? If I have a SaaS application, I have to rely on my users to email or call up to find out something bad happened?

What if it's an assertion error or a bounds error in a plugin? I can unload that plugin and continue on with no issues.

I'm getting OutOfMemoryErrors? I'll disable caching and prefetching and reduce my memory footprint by 80%. Problem solved.

There is one category of errors that is not recoverable. If the runtime is left in an inconsistent state, it should try to output an error message and terminate. Everything else, an application could potentially handle.

Reply via email to