Java知多少(53)使用Java创建自己的异常子类

Java知多少(53)使用Java创建自己的异常子类

尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况。这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwable的一个子类)。你的子类不需要实际执行什么——它们在类型系统中的存在允许你把它们当成异常使用。

Exception类自己没有定义任何方法。当然,它继承了Throwable提供的一些方法。因此,所有异常,包括你创建的,都可以获得Throwable定义的方法。这些方法显示在表10-3中。你还可以在你创建的异常类中覆盖一个或多个这样的方法。

表 10-3 Throwable 定义的方法
方法 描述
Throwable fillInStackTrace( ) 返回一个包含完整堆栈轨迹的Throwable对象,该对象可能被再次引发。
String getLocalizedMessage( ) 返回一个异常的局部描述
String getMessage( ) 返回一个异常的描述
void printStackTrace( ) 显示堆栈轨迹
void printStackTrace(PrintStreamstream) 把堆栈轨迹送到指定的流
void printStackTrace(PrintWriterstream) 把堆栈轨迹送到指定的流
String toString( ) 返回一个包含异常描述的String对象。当输出一个Throwable对象时,该方法被println( )调用

下面的例子声明了Exception的一个新子类,然后该子类当作方法中出错情形的信号。它重载了toString( )方法,这样可以用println( )显示异常的描述。

 1 // This program creates a custom exception type.
 2 class MyException extends Exception {
 3     private int detail;
 4     MyException(int a) {
 5         detail = a;
 6     }
 7 
 8     public String toString() {
 9         return "MyException[" + detail + "]";
10     }
11 }
12 
13 class ExceptionDemo {
14     static void compute(int a) throws MyException {
15         System.out.println("Called compute(" + a + ")");
16        if(a > 10)
17           throw new MyException(a);
18        System.out.println("Normal exit");
19     }
20 
21     public static void main(String args[]) {
22        try {
23            compute(1);
24            compute(20);
25         } catch (MyException e) {
26             System.out.println("Caught " + e);
27         }
28     }
29 }

该例题定义了Exception的一个子类MyException。该子类非常简单:它只含有一个构造函数和一个重载的显示异常值的toString( )方法。ExceptionDemo类定义了一个compute( )方法。该方法抛出一个MyException对象。当compute( )的整型参数比10大时该异常被引发。

main( )方法为MyException设立了一个异常处理程序,然后用一个合法的值和不合法的值调用compute( )来显示执行经过代码的不同路径。下面是结果:
Called compute(1)
Normal exit
Called compute(20)
Caught MyException[20]

系列文章:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109464.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • R及RStudio下载安装教程(超详细)

    R及RStudio下载安装教程(超详细)R语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。如果你是一个计算机程序的初学者并且急切地想了解计算机的通用编程,R语言不是一个很理想的选择,可以选择Python、C或Java。R语言与C语言都是贝尔实验室的研究成果,但两者有不同的侧重领域,R语言是一种解释型的面向数学理论研究工作者的语言,而C语言是为计算机软件工程师设计的。R语言是解释运行的语言(与C语言的编译运行不同),它的执行速度比C语言慢得多,不利于优化。但它在语法层面提供…

    2022年6月15日
    47
  • 检查网站有没有被挂马_网站在线挂马检测工具

    检查网站有没有被挂马_网站在线挂马检测工具首先,我们来看看网站被挂马的危害性。网站被挂马后,一方面是系统资源,流量带宽资源的巨大损失,另一方面也成为了传播网页木马的“傀儡帮凶”,严重影响到网站的公众信誉度。很多网页木马都是利益驱动,偷盗各类帐号密码,如电子银行帐户和密码、游戏帐号和密码、邮箱帐户和密码、qq/MSN帐号和密码等;另外,使得客户端被安装恶意插件,强迫浏览黑客指定的网站,或者被利用攻击某个站点等。  我们知道了网站被挂马

    2022年9月27日
    0
  • mysql如何优化慢查询_慢sql优化思路

    mysql如何优化慢查询_慢sql优化思路这篇文章主要是就在公司实习的时候,对SQL优化工作作出的一些整理。  在公司实习的时候,导师分配了SQL慢查询优化的任务,任务是这样的:每周从平台中导出生产数据库的慢查询文件进行分析。进行SQL优化的手段也主要是修改SQL写法,或者新增索引。  现在从记录项目中的一点点做起。  (1)数据库中设置SQL慢查询    一、第一步.开启mysql慢查询     方…

    2022年10月15日
    0
  • 折半查找函数C语言_c语言数据结构折半查找

    折半查找函数C语言_c语言数据结构折半查找折半查找法(C语言)#include#definemax20intbinary(intx,intlist[],intn)/*从list[]中查找x*/{intlow,high,mid;low=0;high=n-1;while(low<=high){mid=(low+high)/2;/*折半*/if(xhigh=mid…

    2025年6月6日
    0
  • [DLX反复覆盖] hdu 3656 Fire station[通俗易懂]

    [DLX反复覆盖] hdu 3656 Fire station

    2022年2月6日
    52
  • matlab debounce,Debounce Temporal Properties

    matlab debounce,Debounce Temporal PropertiesTemporalOperatorsTheSimulink®DesignVerifier™libraryprovidesthreebasictemporaloperatorblockscanbeusedtomodeltemporalproperties.Theintentofthetemporaloperatorsistosupportthe…

    2022年6月20日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号