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

250213-异常exception

1. 概念

异常的抛出(throw):若在方法运行中出现错误,则方法会生成代表该异常的一个对象,并把它交给运行时系统,这个过程叫做抛出。

异常的捕获(catch):运行时系统接收到该异常对象,然后找到处理这一异常的方法的过程称为捕获。


2. java中几种常见的异常处理类:

(1)算术异常(ArithmeticException):当算术运算中出现了除以零这样的运算就会出这样的异常。
(2)空指针异常(NullPointerException):没有给对象开辟内存空间却使用该对象时会出现空指针异常。
(3)文件未找到异常(FileNotFoundException):当程序试图打开一个不存在的文件进行读写时将会引发该异常。经常是由于文件名给错,或者要存储的磁盘、CD-ROM等被移走,没有放入等原因造成。
(4)数组下标越界异常(ArrayIndexOutOfBoundsException):对于一个给定的大小的数组,如果数组的索引超过上限或低于下限都造成越界。
(5)内存不足错误(OutOfMemoryException):当可用内存不足以让Java虚拟机分配-个对象时抛出该错误。

除了上面内置的处理类,用户也可以自定义异常处理类。

3. 实例

public class DealException
{public static void main(String[] args){try{int[] arr=new int[5];arr[5]=4;System.out.println("我能到这一步吗");}catch(ArrayIndexOutOfBoundsException ex)  //如果try块捕捉到异常对象,则会将该对象//与catch块中异常类的实例化对象进行匹配{System.out.println("数组赋值超出索引范围!");System.out.println("异常"+ex);  //打印异常对象信息ex.printStackTrace();  //查看异常对象的详细信息}finally{System.out.println("main()方法执行完毕。");}}
}
/*输出结果:
数组赋值超出索引范围!
异常java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5at DealException.main(DealException.java:7)
main()方法执行完毕。*/

4. 异常类的处理模式

首先是try块捕捉异常对象(这里的异常对象是JVM自动实例化的),然后逐一与catch方法里的异常类的实例对象进行匹配,匹配成功则由该catch方法处理异常,然后运行finally块,然后执行程序中的其他代码;若与所有的catch方法都不匹配,则运行finally块,然后交由JVM处理(输出异常信息、终止程序运行)。

注意,finally块不是必须的,可以忽略。

由3中的实例可看到,try-catch-finally是放在方法内的。

5. throws关键字

使用throw关键字的方法表明其不处理异常,而是将异常抛给调用该方法的方法,

throws语句后无需分号。实例如下:

public class ThrowsDemo
{public static void main(String[] args){try{int[] arr=new int[5];setZero(arr,9);}catch(ArrayIndexOutOfBoundsException ex)  {System.out.println("数组赋值超出索引范围!");System.out.println("异常"+ex);  //打印异常对象信息ex.printStackTrace();  //查看异常对象的详细信息}System.out.println("main()方法执行完毕。");}private static void setZero(int[] arr,int index)throws ArrayIndexOutOfBoundsException{arr[index]=0;}
}
/*输出结果
数组赋值超出索引范围!
异常java.lang.ArrayIndexOutOfBoundsException: Index 9 out of bounds for length 5
java.lang.ArrayIndexOutOfBoundsException: Index 9 out of bounds for length 5at ThrowDemo.setZero(ThrowDemo.java:21)at ThrowDemo.main(ThrowDemo.java:7)
main()方法执行完毕。*/

6. throw关键字

背景:用户希望try块出现的异常对象能由自己手动实例化。

throw语句的格式:throw 异常类型的实例;(注意,带分号)。执行该条语句后则会抛出一个指定异常类型的异常对象。

7. 小结

综合前述的知识,在实际应用中,try-catch-finally、throws、throw常常联合使用。

8. Exception类和RuntimeException类


http://www.mrgr.cn/news/90668.html

相关文章:

  • 【Elasticsearch】keyword分析器
  • Python Pandas(7):Pandas 数据清洗
  • 玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成
  • 跟着李沐老师学习深度学习(八)
  • 网络安全产品架构图 网络安全相关产品
  • Qt Pro、Pri、Prf
  • 【鸿蒙】ArkUI-X跨平台问题集锦
  • Elasticvue使用总结
  • Navicat导入海量Excel数据到数据库(简易介绍)
  • Linux——stdio
  • CentOS 7操作系统部署KVM软件和创建虚拟机
  • JavaScript 发起网络请求
  • DeepSeek教unity------MessagePack-01
  • 【2025深度学习系列专栏大纲:深入探索与实践深度学习】
  • PostgreSQL 备库的延迟问题
  • AcWing 795. 前缀和理解
  • 微服务SpringCloud Alibaba组件nacos教程(一)【详解naocs基础使用、服务中心配置、集群配置,附有案例+示例代码】
  • 【OpenCV】双目相机计算深度图和点云
  • windows10本地的JMeter+Influxdb+Grafana压测性能测试,【亲测,避坑】
  • MySQL、MariaDB 和 TDSQL 的区别
  • dedecms 开放重定向漏洞(附脚本)(CVE-2024-57241)
  • post、get、delete、put请求
  • 如何部署Deepseek-R1:从零开始的完整指南
  • fps武器系统3:发射子弹命中反馈
  • CTF-web:java-h2 堆叠注入rce -- N1ctf Junior EasyDB
  • java八股---java02(面向对象、类、变量、方法、值传递)