Ben Simon wrote:

Thanks for the quick feedback. Sorry to be so thick on this, but I'm still not seeing it.


Oh, don't feel that way. It's an "obvious after you see it (usually by being shown it) thing".



When I write code that throws an exception, I don't think: "is this continuable or not," I think "this has to fail, let someone else deal with it." I guess it boils down to the fact that I don't see why an exception isn't always continuable depending on how clever the handler wants to be.

Perhaps you can provide an example of a continuable and non-continuable circumstances? That would probably clear things up.


Well, personally, I don't think dynamically scoped error handlers are a good idea at all and I think there's almost always a better way to code applications that want to use exceptions for non-error purposes. So, you're asking me explain the design logic of features I don't think make a lot of sense -- but, hey, I can do that:

Example of continuable: Virtual Memory Page Faults!

One of the primitive operations in a typical OS kernel like Linux is "give some cycles to process X". One of the exceptions that primitive can raise is "Oops -- X tried to access a virtual page of memory that isn't mapped!". The kernel treats that as a continuable exception: it brings the demanded page into the virtual memory system and then retries the instruction that raised the exception.

and, example of non-continuable: Virtual Memory Illegal Address References

Illegal address references, on the other hand, don't continue (normally) -- they non-locally exit back to the parent process.

-t






Thanks,
Ben

--
Ben Simon
My blog: http://benjisimon.blogspot.com
tenspotting.com <http://tenspotting.com> - Top 10 Lists++

_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to