我正在尝试在java中为android定义自定义异常。最初我想过使用枚举异常,但在阅读this链接之后,我理解了使用枚举异常的缺点。
考虑到上面我写了一个简单的自定义异常类:
public class EXInvalidEmployeeIDException extends Exception {
public String msg;
public Integer employeeID;
public EXInvalidEmployeeIDException(Integer devID) {
this.devID = devID;
}
public EXInvalidEmployeeIDException(Integer devID, string msg) {
this.devID = devID;
this.msg = msg;
}
public Integer getEmployeeID () {
return this.devID;
}
public String getEmployeeID () {
return this.msg
}
}
我的问题:
1)我是否应该调用超类构造函数?在我的代码中,我没有调用任何超类函数,它仍然可以正常工作。
2)如果需要,我需要从超类中覆盖哪些函数(即;异常类)
在this链接中,以下方法被覆盖
A) Constructor,
B) Constructor with String
C) Constructor with Thowable.
3)我的示例代码是否足够?
请告知。
答案 0 :(得分:1)
如果您正在为自己的异常创建构造函数方法,那么我认为调用super();
是好的(且更便宜)。这样,您可以确保Throwable
(*超级Exception
}将内部状态变量初始化为detailMessage
,cause
等等。
您可以查看Throwable
源代码here,看看我在告诉您什么。
要回答第二个问题,您必须覆盖要自定义的构造函数/方法,但是在完成特殊工作后不要忘记调用超级构造函数/方法。
最后,我不会复制msg
因为如果你打电话给超级,那么你正在使用Throwable.detailMessage
。
答案 1 :(得分:0)
我是否应该调用超类构造函数?
总是,但是当父类具有可访问的默认构造函数时,编译器可以为您提供它。
如果需要,我需要从超类中覆盖哪些函数(即; Exception类)
您需要覆盖的功能(如果有)完全取决于您的需要。这意味着什么取决于你。没有人能为你定义它。