网站首页 > java教程 正文
Java为我们定义了非常多的异常处理,当程序运行出现问题之后,Java会将异常信息打印出来,我们可以很直观地看到问题的源头和原因,但是在我们开发中,会遇到各式各样的问题,Java原有定义的异常经常会不满足我们的使用,这时候我们就可以自定义一些异常,当程序运行过程中出现某些情况的时候,可以将我们自定义的异常抛出,自定义的异常信息中可以包含我们当前所遇到的情况详情,这样我们就可以很明确的知道了那块发生了什么问题或者知道那块不满足我们的预期要求。
自定义的异常类和普通类一样,只要继承于Exception或者Exception子类即可,我们可以在自定义的类里面重写构造函数,函数的参数为错误的原因,并且调用父类的构造函数,例如:publice MyException extends Exception { public MyException(String message) {super.(message)}},定义好异常之后,我们可以在程序运行到某一步之后,抛出该异常,可以方便我们查找问题。
自定义的异常和系统异常的使用方法一致,都是使用throw new MyException("密码不正确");进行异常的抛出。抛出该异常之后,我们可以在调用含有该异常的方法的时候,使用try {} catch(MyException e) {}进行捕获处理,当然我们也可以将异常继续往上一级进行抛,让上一级的调用者进行处理,将异常继续往上抛的方式和系统异常一样,在方法的后面使用throws抛向上一级。
刚才说了自定义的异常和普通类一样,那么自定义的异常也是可以被继承,我们创建两个自定义的异常 ParentException和ChildException,其中ChildException继承于ParentException,在我们开发中,经常会有不同的情况进行不同的处理,例如在一个方法中可能出现ChildException,ParentException,Exception三种异常,我们使用try {} catch(Exception e){}进行捕获的时候,我们需要按照由子到父的捕获顺序,也就是说我们捕获异常的顺序为ChildException, ParentException, Exception,格式为 try {} catch (ChildException e){} catch (ParentException e){} catch (Exception e){},如果我们的调用顺序颠倒之后,程序无论发生任何异常都只会被Exception捕获,不会被子异常类捕获,原因是当程序catch到一个异常之后,就不会继续往下进行,而Exception是异常类的父类,只要发生异常就会被它捕获,所以后面的不会继续执行,所以在捕获异常的时候,顺序非常重要,否则程序打印的异常会和我们预期的不一样。
猜你喜欢
- 2024-11-06 Java核心知识3:异常机制详解(java的三种核心机制是什么)
- 2024-11-06 【Spring系列】05 自定义异常以及全局异常处理器 #java
- 2024-11-06 3种Sentinel自定义异常,你用过几种?
- 2024-11-06 关于Java Exception异常的深入用法及实例
- 2024-11-06 Java-throw异常详解以及过程(java throw exception)
- 2024-11-06 《JAVA编程思想》5分钟速成:第12章(异常)
- 2024-11-06 面试官:java开发中异常怎么定义好 程序员:不知道
- 2024-11-06 「译」11条Java异常处理的最佳实践
- 2024-11-06 Java入门教程十一(异常处理)(java异常处理的三种方法)
- 2024-11-06 Java,你管这叫异常?(java异常是什么意思)
你 发表评论:
欢迎- 05-16SpringBoot整合Redis实现常用功能
- 05-16基于Redis实现简单的延时消息队列
- 05-16安装Redis
- 05-16Spring系列之Redis的两种集成方式
- 05-16Django连接Redis集群问题排查思路和总结
- 05-16只需5分钟,完成Redis所有命令操作~
- 05-16熟练使用 Redis 的 5 大数据结构:Java 实战教程
- 05-16Redis 常见业务场景及实例(Java)
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)