`
yuyiming1986
  • 浏览: 61900 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

相关推荐

    Java《面向对象程序设计》实验报告六

    另外,编写自定义类person,类中只有两个私有的变量,一个是字符串类型的姓名,另一个是整型变量age;有两个公有方法void getAge()和setAge(int age),其中setAge(int age)的功能是把参数age的值加到类中的变量age中...

    Python自定义一个异常类的方法

    那么就可以通过直接或间接的继承Exception就可以自定义一个异常类,当然也可以间接的继承python内置的异常类。 通常的做法是,先为自己的模块创建一个基类,然后再从此基类派生其他异常类,这样不但清晰明

    非常简单易用QQ邮箱发送验证码API+HTML源码支持API接口、自定义QQ邮箱地址、自定义邮箱标题和内容的源码.rar

    幸运的是,通过向ChatGPT提问,我成功得到了一个实现案例。然而,我面临了另一个难题,即如何导入PHPMailer类库。我花了很多时间也没明白,于是决定尝试替换以下代码: require ‘vendor/autoload.php’; // 导入...

    HomeAssistant-GreeClimateComponent:使用Python3为Home Assistant编写的自定义Gree气候组件。 控制AC支持Gree协议

    使用Python3为Home Assistant编写的自定义Gree气候组件。 控制AC支持Gree协议。 在以下硬件上进行了测试: Innova暖通空调 库珀和亨特(CH-S12FTXE(WI-FI)-NG) 带有WI-FI模块CS532AE的AC Pioneer Fortis系列 ...

    Python大学教程ppt课件.pptx

    BaseException类是所有异常类的基类,而其子类Exception类则是除了SystemExit、GeneratorExit和KeybaordInterrupt三个系统级异常之外所有内置异常类和用户自定义异常类的基类。 Python大学教程ppt课件全文共14页,...

    Java异常处理.md

    在try块中编写可能抛出异常的代码,然后使用一个或多个catch块来捕获并处理这些异常。finally块用于执行无论是否发生异常都必须执行的代码,例如资源释放。 除了捕获异常外,我们还可以使用throw语句手动抛出异常。...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    10.1.3 一类车,一个类 241 10.1.4 分开也有麻烦 244 10.1.5 使用继承——问题迎刃而解 245 10.1.6 使用Bus类 248 10.1.7 Java中的单继承 248 10.1.8 Java中的类图 249 10.1.9 万类之祖——Object类 250 10.2...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    10.1.3 一类车,一个类 241 10.1.4 分开也有麻烦 244 10.1.5 使用继承——问题迎刃而解 245 10.1.6 使用Bus类 248 10.1.7 Java中的单继承 248 10.1.8 Java中的类图 249 10.1.9 万类之祖——Object类 250 10.2...

    QQ邮箱发送验证码API+HTML源码

    幸运的是,通过向ChatGPT提问,我成功得到了一个实现案例。然而,我面临了另一个难题,即如何导入PHPMailer类库。我花了很多时间也没明白,于是决定尝试替换以下代码: require ‘vendor/autoload.php’; // 导入...

    深入浅出Struts2(附源码)

    8.4 编写自定义的验证程序 173 8.4.1 注册 176 8.4.2 示例 177 8.5 利用Validateable接口实现编程验证 180 8.6 小结 182 第9章消息处理与国际化 183 9.1 地区和Java资源绑定 183 9.2 Struts中的国际化支持 ...

    java实验2实验报告.doc

    编写一个四则运算程序,要求用户输入一个x值和一个y值,以及一个四则运算符。如 果用户输入正确,则给出运算结果,如果输入错误,则给出出错警告。(利用异常处理 编程,尽量使用java现成的异常类,如没有可自定义...

    《Java程序设计案例教程》教学课件07异常处理.pptx

    模块7 异常处理 《Java程序设计案例教程》教学课件07异常处理全文共31页,当前为第1页。 学习目标 01 了解异常产生的原因。 02 了解Java异常体系...一个catch语句块仅对应一个try语句块,但是一个try语句块可以对应多

    Java开发技术大全(500个源代码).

    invokeMethod.java 同一个类中调用方法示例 invokeOther.java 类的外部调用方法示例 invokeStaticMethod.java 调用静态方法示例 localVariable.java 演示局部变量 localVSmember.java 局部变量与成员变量同名...

    ObjectOrientedProgramming_module2_practice_questions:该存储库包含有关异常处理,字符串,StringBuilder,StringBuffer,包装类,多线程,泛型,泛型方法,集合,ArrayList和HashSet的Java实践问题

    面向对象的编程_模块2_实践_问题异常处理定义一个名为“ MyFirstException”的自定义异常(即用户定义的异常)类。 此类包含一个参数化的构造函数,该构造函数接受一个参数String消息。 每当出现此异常时,将打印...

    .NET中的异常和异常处理用法分析

    可以通过编写一个继承自Exception的类的方式,自定义异常类! 异常处理机制: 代码如下:Try {  //可能发生异常的代码  //后续代码  } //Try以外的代码 catch(Exception e) { } finally { } 上述代码描述如下 1...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    8.4 编写自定义的验证程序 173 8.4.1 注册 176 8.4.2 示例 177 8.5 利用Validateable接口实现编程验证 180 8.6 小结 182 第9章 消息处理与国际化 183 9.1 地区和Java资源绑定 183 9.2 Struts中的国际化支持 185 9.3...

    《JAVA上机指导》

    (三)编写显示当前日期和时间的程序 20 (四)使用修饰符 21 (五)方法中参数传递的练习 22 (六)类的继承性练习 23 (七)类的多态性练习 24 四、思考题 28 实验 4 包、接口与异常处理(exception)...

    java 面试题 总结

    如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 15、error和exception有什么区别? error 表示恢复不是...

Global site tag (gtag.js) - Google Analytics