Java语言规范中对此进行了解释(粗体强调):
如果
catch子句 可以捕获已 检查的异常类E1,并且不是try与catch子句相对应的块 可以抛出
作为E1的子类或超类的已检查的异常类,则不是编译时错误, 除非E1是Exception或父类。的Exception。
我想这背后的理由是:
MyException确实是一个检查异常。但是,未经检查的异常也会扩展
Exception(从继承继承
RuntimeException),因此在编译器进行的异常分析中排除了
catch包含
Exception类。



