如何编写一个自定义的Exception类
如何编写一个自定义的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,所以说,异常描述信息,最终会以"类的全限名:异常描述信息"的方式打印出来,再打印出堆栈当中函数调用链的信息。