当前位置: 首页 > news >正文

Java -- 异常--以及处理

异常:

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

俩大类:

1. Error (错误):java虚拟机无法解决的严重问题。 如:JVM系统内部错误,资源耗尽等严重错误情况。

2. Exception: 其他因编译错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如空指针访问,视图读取不存在的文件,分为 运行时异常【程序运行时,发生的异常】和 编译时异常【编程时,编译器检查出的异常】。

常见的运行时异常举例:

1. NullPointerException空指针异常 ,当异常程序试图在需要对象的地方使用null时,抛出该异常

2. ArrayIndexOutOfBoundsException ,数组下标越界异常,用非法索引访问数组时抛出的异常。

3. ClassCastException,试图将对象转换为不是实例的子类时,抛出该异常

4. NumberFormatException,数字格式不正确异常,字符串格式不能转换为适当格式时,抛出该异常


异常处理

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

1. try-catch-finally 程序员在代码中捕获发生的异常,自行处理

2. throws 将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者就是JVM

try {

代码/可能有异常 

} catch(Exception e ){

//1. 异常发生时 

//2. 系统将异常封装成Excption 对象 e 传递给catch

//3. 得到异常处理对象后,程序员,自己处理

//4. 注意:如果没有发生异常catch代码块不执行

}

finally{

// 1.不管try代码块是否有异常发生,始终要执行finally

// 2.所以,通常将释放资源的代码,放在finally

}

1. try-catch

细节:

1. 如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch块。

2. 如果异常没有发生,则顺序执行try的代码块,不会进入到catch

3. 如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源)

4. 可以有多个catch语句,捕获不同的异常,要求父类异常在后,子类异常在前,比如(Execption在后,NullPointerException在前),如果发生异常,只会匹配一个catch

5. 可以进行try-finally 配合使用,这种用法相当于没有捕获异常,因此程序会直接崩掉。

2. throws异常处理

介绍:如果一个方法可能生成某种异常,但是并不能确定如何处理这些异常,则此方法应显示声明抛出异常,表示该方法不将对这些异常进行处理,而由该方法的调用者负责处理

注意事项和细节:

1. 对于编译异常,程序中必须处理,比如 try-catch 或者 throws 

2. 对于运行异常,程序中如果没有处理,默认就是throws的方式处理

3. 子类重写父类方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的一致,要么为父类抛出异常的类型的子类型

4. throws过程中,如果有方法 try-catch,相当于处理异常,就可以不必throws

http://www.dtcms.com/a/271591.html

相关文章:

  • 图像自动化处理初探:从拖拽上传到参数设置
  • 智能Agent场景实战指南 Day 7:智能客服Agent设计与实现
  • 继承与多态:面向对象编程的两大支柱
  • 多线程(2)
  • 1、专栏介绍以及目录
  • Vue3常用指令
  • 可转债应该在什么价卖出?
  • 01-elasticsearch-搭个简单的window服务-ik分词器-简单使用
  • RAGFlow 与 QAnything 智能切片对比:深度解析与优劣考量
  • LeetCode热题100—— 152. 乘积最大子数组
  • ServBay Windows 1.2.0 更新!新增 PHP 设置与 Ollama 支持
  • 一个基于若依(ruoyi-vue3)的小项目部署记录
  • c++11新标准、STL
  • Spring核心注解揭秘:`@Configuration`与`@Component`的本质区别
  • Windows宿主机 与 VMWare centos虚拟机 之间的通信访问
  • Java异步编程全解析:从基础到高阶实战
  • Shader面试题100道之(41-60)
  • 借助ssh实现web服务的安全验证
  • claude code调用(免费白嫖100额度)
  • CentOS/RHEL LVM 磁盘扩展完整教程
  • 数学模型:十大距离
  • 小程序软装: 组件库开发
  • 打造企业级数据治理运营体系:从项目到产品,再到体系化运营
  • 图像处理中的直方图均衡化:原理与实现
  • 一天两道力扣(3)
  • 减少空间占用的生成模型实战与推理资源消耗量化对比
  • CTFHub————Web[信息泄露(目录遍历、PHPINFO)]
  • Windows Subsystem for Linux (WSL):现代开发的终极跨平台方案
  • 【Modern C++ Part7】_创建对象时使用()和{}的区别
  • 计算机嵌入式基础