Do we really want to be throwing Errors? I've been under the impression that Errors are reserved for JVM level issues (ie. OutOfMemory, NoClassDefFoundError) and a user program should never catch them nor deal with them (except perhaps to log them and then rethrow).