Sorry, I posted this to a presumably defunct Yahoo group before I saw this bulletin board.
I already know Scheme and C++. It's considered bad C++ style by some (e.g. see "The Pragmatic Programmer") to use exceptions to report all errors. Instead, a mixture of exceptions (for truly exceptional errors, likely caused by a program bug) and return codes (for errors which are expected in normal program execution, e.g. "file not found" if you're getting the filename from the user) is recommended.
This is largely because exceptions are a non-local transfer of control (like goto), so can make program comprehension difficult. There is also an efficiency argument, but in practice it rarely applies to anything other than real-time code. On the other hand, judicious use of exceptions can declutter the main control path.
I was wondering if there is the same divide in ISLISP. The language definition seems to hint that you should use conditions for every error. Is that considered good Lisp style (note I'm not concerned about efficiency, just maintainability)?