我在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中的实例化不同,可能会出现此问题.
不。
您不能直接跳回方法的中间。
如果您不想将代码复制粘贴到其中(好主意!),您必须将共享代码放入您的子类可以调用的单独方法中。
或者,您可以将可能抛出 NullPointerException 的部分放入单独的方法中,并在子类中重写它(以便它不再抛出)。
但是由于SubClass中的实例化不同,可能会出现这个问题。
也许您可以通过改变实例化的方式来完全回避异常?也许为当前的事物提供一个“虚拟对象” null
?不会做任何有害的事情,但可以防止异常的东西?
归档时间: |
|
查看次数: |
130 次 |
最近记录: |