如何编写一个自定义的Exception类
1.编写自定义
异常类实际上是继承一个API标准异常类,用新定义的
异常处理信息覆盖原有信息的过程。
至少要继承Throwable或Throwable的子类(Exception),然后编写两个构造函数,一个无参构造函数,另一个提供描述异常信息字符串参数的构造函数。
在继承任何异常时,将自动继承Throwable类的一些标准特性,如:
错误消息
栈跟踪
异常包装
2.
代码示例:
class SomeException extends Exception{
public SomeException(){
}
public SomeException(String s){
super(s);
}
}
3.
在显示异常信息的时候,其实就是调用异常对象的toString()方法
+SomeException(String s)
|
+super(s):SomeException
|
+super(s):Exception
|
+detailMessage = s:Throwable
所以说在throw new SomeException(String s)抛出异常时,异常描述信息,被延着继承链一直往基类方向传递(SomeException->Exception->Throwable),在输出异常信息的时候,会调用异常对象的toString()方法。
在Throwable当中toString()定义如下:
public String toString() {
String s = getClass().getName();
String message = getLocalizedMessage();
return (message != null) ? (s + ": " + message) : s;
}
而message来自于detailMessage,所以说,异常描述信息,最终会以"
类的全限名:异常描述信息"的方式打印出来,再打印出
堆栈当中函数调用链的信息。