是否有可能在异常后恢复Java执行?

gar*_*ryF 5 java exception

我在JAR中有一个ParentClass,但不是源代码.我正在实现一个SubClass,但我需要处理一些极端情况.

class ParentClass {
    void foo() {
       … // lots of code 1
       ; // can possibly throw NullPointerException 
       … // lots of code 2
    }
}
class SubClass extends ParentClass {
    @Override
    void foo() {
       try {super.foo();}
       catch(NullPointerException npe) {… /*handle exception*/}
       finally {… /* resume lots of code 2 ? */}
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法//lots of code 2在覆盖方法中处理异常后运行该部件?我不想重复代码,也不能修改ParentClass.

PS:ParentClass中没有NullPointerException问题.但由于SubClass中的实例化不同,可能会出现此问题.

Thi*_*ilo 3

不。

您不能直接跳回方法的中间。

如果您不想将代码复制粘贴到其中(好主意!),您必须将共享代码放入您的子类可以调用的单独方法中。

或者,您可以将可能抛出 NullPointerException 的部分放入单独的方法中,并在子类中重写它(以便它不再抛出)。

但是由于SubClass中的实例化不同,可能会出现这个问题。

也许您可以通过改变实例化的方式来完全回避异常?也许为当前的事物提供一个“虚拟对象” null?不会做任何有害的事情,但可以防止异常的东西?