My approach to exceptions is that I never try to catch them unless I think I can do something to fix what went wrong and continue. I wrap the program at the top level to catch exceptions that nothing else has caught and print stacktraces. There's no reason to have more than one eval block if all they're going to do is print a stacktrace.