class A{
}
class B extends A throws Exception{
}
上面的代码给出了CompileTime错误"令牌上的语法错误" throws",实现了预期"
任何人都可以告诉我为什么在java中不允许这样做的确切原因。提前致谢
答案 0 :(得分:4)
类只是对象的模板。虽然它确实包含实际执行指令的方法,但它本身不会抛出异常,因为它不执行实际代码。因此throws子句只能用于方法,而不能用于类本身。
答案 1 :(得分:0)
作为覆盖方法的一般规则,您不能抛出已经由父类/接口中的方法定义的已检查异常。 这是为了确保处理已检查的异常,否则会出现编译时错误。
如果存在使用父引用调用方法的代码,那么在编译时,被覆盖的实现是未知的,因此它抛出的异常也是如此,因此编译器将无法为未处理的已检查异常设置错误。 为避免这种情况,编译器不允许为overriden方法定义新的已检查异常。