异常

异常

基本概念

java语言中,将程序执行中发生的不正常情况称为异常,(开发过程中的语法问题和逻辑错误不是异常)

  • 异常可以分为两大类:Error和Exception

Error(错误)

Java虚拟机无法结局的严重问题,例如JVM系统的内部错误,资源耗尽等严重情况,比如:栈溢出,OOM(out of memory),Error是很严重的错误,系统会崩溃

Exception

其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理,例如空指针访问,试图读取不存在的文件,网络连接中断,Exception可以分为两大类运行时异常,以及编译时异常

异常体系图

  1. 运行时异常:指的是编译器检测不出来,一般指的是编译时的逻辑错误(除数为0),是程序员应该避免其出现的异常,java.lang.RuntimeException类及他的子类都是运行时异常
  2. 对于运行时异常,可以不做处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响
  3. 编译时异常,是编译器要求处置的异常

常见的运行时异常包括

  1. NullPointerException,空指针异常
  2. ArithmeticException数字运算异常
  3. ArrayIndexOutOfBoundsException数组下标越界异常
  4. ClassCastException类型转换异常
  5. NumberFormatException数字格式不正确异常

编译异常

介绍:

其他因编程错误或偶然的外在因素导致的一般性问题,编译期间就必须处理的异常,否则代码不能通过编译

  • 常见的编译异常:
    • SQLException 操作数据库时,查询表可能发生的异常
    • IOEception 操作文件时发生的异常
    • FileNotFoundException 当操作一个不存在的文件时,发生异常
    • ClassNotFoundException 加载类发现类不存在时发生的异常
    • EOFException 操作文件,到文件末尾,发生的异常
    • IllegalArguementException 参数异常

异常处理机制

基本介绍

异常处理就是当异常发生时,对异常处理的方式

异常处理的方式

  1. try—catch -finally

程序员在代码中捕获的异常,自行处理

try{
    代码//可能会发生的异常
    
}catch (Exception e){
   //捕获到的异常
    1. 当异常发生的时候
        2. 系统会把发生的异常封装成exception对象e传给catch
        3,得到异常对象后程序员自行处理
        4,如果没有异常,那么catch就不会执行
}
finally{
    不论有没有异常都会执行
}
  1. throws

将发生的异常抛出,交给调用者处理,最顶级的处理者就是JVM

throws的处理机制

try—catch细节

  1. 如果异常发生了,则异常后面的代码不会执行,会直接进入catch块中
  2. 如果没有异常发生,那么则会直接跳过chatch代码块
  3. 如果不论异常是否发生,都要执行某段代码(例如释放资源,关闭链接),则使用finally{}
  4. 可以有多个catch,分别捕获多个异常,但是要求子类异常放在前面,父类放在后面
  5. 可以使用try-finally配合使用,这种用法相当于没有捕获异常,因此程序会直接崩掉,应用在一段代码不论是否会崩掉,都要执行某个业务逻辑

throws

  1. 如果一个方法可能会生成某种异常,但是不能确定如何处理这种异常,则此方法应显示的抛出异常,表明该方法将不对这些异常进行处理,
  2. 在方法中声明用throws语句可以抛出异常的列表;throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类

throws使用细节

  1. 对于编译时异常,我们必须使用throws或者try-catch
  2. 对于运行时异常,程序如果没有处理,默认就是throws的处理方法
  3. 子类所抛出的异常类型要么和父类一致,要么为父类抛出异常类型的子类
  4. 在throws中有try-catch方法,就相当于处理异常,就可以不必throws
意义 位置 后面跟的东西
throws 异常处理的一种方法 方法的声明出 异常类型
throw 手动生成异常对象的关键字 方法体中 异常对象
posted @     阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示