8.2.3 用户自定义的异常类
系统定义的异常主要用来处理可以预见的较常见的运行错误。对于某个应用所特有的运行错误,则需要编程人员根据程序的特殊逻辑,在用户程序里自己定义异常类,适时抛出并处理这个特有的运行错误。
创建用户自定义异常时,一般需要完成如下工作:
(1)定义一个新的异常类,一般作为Throwable或Exception类的子类,不作为Error的子类,因为Error通常被用来表示系统内部的严重故障。
(2)为新的异常类定义属性和方法,或隐藏父类的属性和覆盖父类的方法,使这些属性和方法能够体现该类所对应的错误信息。
一个自定义异常类,如果它所对应的异常事件通常是在运行时产生,而且不容易预测它将
在何时何地发生,可将它定义为运行时异常,否则定义成非运行时异常,即Exception的子类,以产生受检查的异常。自定义异常类的格式为:
为了更好地继承Exception类,首先要了解Exception类的属性和方法。
(1)Exception类的4个重载的构造方法
·public Exception()创建新异常对象。
·public Exception(String message)创建包含指定异常详细消息的新异常对象。字符串参数message,描述异常对象的详细消息。
·public Exception(Throwable cause)创建包含指定原因的新异常对象。引用变量参数cause(原因),描述导致新异常对象抛出的异常对象。
·public Exception(String message,Throwable cause)创建包含指定异常详细消息和指定原因的新异常对象。
(2)Exception类常用的方法
·public String toString()返回当前异常对象的简短描述。格式为:“此异常的类名:异常的本地化描述”。
·public String getMessage()返回描述当前异常对象的详细消息字符串。
·public void printStackTrace()在屏幕上输出当前异常对象使用堆栈的轨迹,即程序中先后调用了哪些方法,使得运行过程中产生了这个异常对象。
·public Throwable getCause()返回当前异常对象的原因(cause);如果cause不存在或未知,则返回null。
·public Throwable initCause(Throwable cause)将当前异常对象的原因(cause)初始化为指定值。
【例8-3】 设计用户自定义异常类。这样,当出现计算负数的平方根时,可输出提示信息:用户自定义异常类名:输入错误!。
思考与分析:MyExceptionClass只是用户自定义类,不能单独运行。它继承了Exception,使它成为受检查异常;覆盖Exception类的toString()方法,能更好地描述当前异常对象的信息;自定义构造方法中的super(″输入错误!+″x=″+x+″,当x的平方根为负数时引发了自定义异常。″);语句,用来调用父类Exception的构造方法,这样,当出现计算负数的平方根时,可通过当前异常对象的getMessage()方法得到该错误信息的详细描述。
【例8-4】 设计用户自定义异常类。当出现小时不在0~23范围之内或分秒不在0~59范围之内的情况时,可输出提示信息。
只有定义了用户自定义异常类,程序才有可能去抛出这种类型的异常,进而捕获并处理这种类型的错误。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。