Java自定义异常类
2023-03-15 21:59:16 时间
自定义异常:步骤
一:创建一个类继承于Throwable或其子类;
二:添加构造方法;
三:在一个方法中使用throw抛出异常;
四:在另一个方法中捕获并处理异常。
示例:
一、继承Exception类
Java代码
- public class MyFirstException extends Exception {
- public MyFirstException() {
- super();
- }
- public MyFirstException(String msg) {
- super(msg);
- }
- public MyFirstException(String msg, Throwable cause) {
- super(msg, cause);
- }
- public MyFirstException(Throwable cause) {
- super(cause);
- }
- //自定义异常类的主要作用是区分异常发生的位置,当用户遇到异常时,
- //根据异常名就可以知道哪里有异常,根据异常提示信息进行修改。
- }
二、 继承Throwable 类
Java代码
- public class MySecondException extends Throwable {
- public MySecondException() {
- super();
- }
- public MySecondException(String msg) {
- super(msg);
- }
- public MySecondException(String msg, Throwable cause) {
- super(msg, cause);
- }
- public MySecondException(Throwable cause) {
- super(cause);
- }
- }
三、测试
Java代码
- /**
- * 自定义异常类的使用
- * @author new
- *
- */
- public class TestMyException {
- public static void firstException() throws MyFirstException{
- throw new MyFirstException(""firstException()" method occurs an exception!");
- }
- public static void secondException() throws MySecondException{
- throw new MySecondException(""secondException()" method occurs an exception!");
- }
- public static void main(String[] args) {
- try {
- TestMyException.firstException();
- TestMyException.secondException();
- } catch (MyFirstException e1){
- System.out.println("Exception: " + e1.getMessage());
- e1.printStackTrace();
- } catch (MySecondException e2){
- System.out.println("Exception: " + e2.getMessage());
- e2.printStackTrace();
- }
- //当一个try块后面跟着多个catch块时,如果发生的异常匹配***个catch块的参数,便将异常处理权利交给***个catch块。
- //如果发生的异常与***个catch块不匹配,便看是否与第二个catch块匹配,依次下去,如果到***依然无法匹配该异常,
- //便需要在方法声明中添加一条throw语句,将该异常抛出。
- //因此,在有多个catch块,而且每次处理的异常类型具有继承关系时,应该首先catch子类异常,再catch父类异常。
- //比如,如果MySecondException继承MyFirstException,那么***将catch(MySecondException e2)放在前面
- //把catch (MyFirstException e1)放在后面。
- }
原文链接:http://www.cnblogs.com/winkey4986/archive/2011/12/13/2285768.html
【编辑推荐】
相关文章
- 适合 Java 新手的开源项目集合——在 GitHub 学编程
- 基准测试:Java 微服务能像Go一样快吗?
- 一篇文章带你搞定Java的数据库访问
- 为什么我们选择Java开发高频交易系统?
- 中国电信营业厅: 感受 Kotlin 的 加速度
- 并发编程之Synchronized深入理解
- Java微服务可以和Go一样快吗?
- 值得推荐的13个 Jenkins 替代方案
- Spring Boot 把 Maven 干掉了
- 适用于应用开发的十大优秀Java IDE
- 用 Java 训练深度学习模型,原来可以这么简单!
- 阿里云一面:并发场景下的底层细节 - 伪共享问题
- 「跬步千里」详解 Java 内存模型与原子性、可见性、有序性
- 以 DEBUG 方式深入理解线程的底层运行原理
- Java 线程和操作系统的线程有啥区别?
- Java 集合框架体系总览
- Java 中为什么要设计包装类
- 读懂框架设计的灵魂—Java反射机制
- 从头捋了一遍 Java 代理机制,收获颇丰
- Java开发学习(五十)----MyBatisPlus快速开发之代码生成器解析