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

java之认识异常

在 Java 中,异常(Exception)用于处理程序运行时出现的错误或异常情况。Java 的异常处理机制基于 try, catch, finallythrow 关键字。

1.异常的分类:

1.1:检查型异常(CheckedException):

定义:程序在编译期间发生的异常,是编译器要求必须处理的异常。

处理方法:使用try-catch块处理,或在方法中使用throws处理抛出异常

Ex1:IOException     ClassNotFoundException

try {// 可能抛出检查型异常的代码FileReader file = new FileReader("file.txt");
} catch (IOException e) {// 异常处理代码e.printStackTrace();
}

1.2:非检查型异常(Unchecked Exceptions)/运行异常:

定义:在程序执行期间出现的异常,称为运行时异常,也叫非检查类型异常。

Ex2:NullPointerException(空指针异常)ArrayIndexOutOfBoundsException(数组越界异常)ArithmeticException(算术异常)

处理方法:可通过Try-Catch 进行捕获和处理。

try {int result = 10 / 0; // 可能抛出 ArithmeticException
} catch (ArithmeticException e) {// 异常处理代码e.printStackTrace();
}

2.异常处理的基本结构:

2.1  try-catch 块:

 try块:可能包含抛出异常的代码。

catch块:用于捕获异常

try { // 可能会抛出异常的代码} catch (ExceptionType e) { // 处理异常的代码}
// 如果try中的代码抛出异常了,此处catch捕获时异常类型与try中抛出的异常类型一致时,或者是try中抛出异常的基类 时,就会被捕获到
// 对异常就可以正常处理,处理完成后,跳出try-catch结构,继续执行后序代码

2.2: finally块:  finally块是可选的,它包含在 try 块之后,不论是否发生异常,finally 块中的代码总会执行。通常用于资源的清理工作,如关闭文件流等。

try {// 可能会抛出异常的代码
} catch (ExceptionType e) {// 处理异常的代码
} finally {// 总会执行的代码
}
// 后序代码
// 当异常被捕获到时,异常就被处理了,这里的后序代码一定会执行
// 如果捕获了,由于捕获时类型不对,那就没有捕获到,这里的代码就不会被执行

2.3 throw 和 throws :

throw 关键字:抛出一个指定的异常对象,将错误信息告知给调用者。在方内法部抛出异常。
Ex3:
throws关键字:处在方法声明时参数列表之后,当方法中抛出编译时异常,用户不想处理该异常,此时就可以借助throws 将异常抛给方法的调用者来处理。即当前方法不处理异常,提醒方法的调用者处理异常
语法格式:
修饰符 返回值类型 方法名(参数列表) throws 异常类型1,异常类型2...{
}

EX4:

注:

1. throws必须跟在方法的参数列表之后
2. 声明的异常必须是 Exception 或者 Exception 的子类

3. 方法内部如果抛出了多个异常,throws之后必须跟多个异常类型,之间用逗号隔开,如果抛出多个异常类型具有父子关系,直接声明父类即可。

EX5:

public class Config {
File file;
// public void OpenConfig(String filename) throws IOException,FileNotFoundException{
// FileNotFoundException 继承自 IOException
public void OpenConfig(String filename) throws IOException{
if(filename.endsWith(".ini")){
throw new IOException("文件不是.ini文件");
}
if(filename.equals("config.ini")){
throw new FileNotFoundException("配置文件名字不对");
}

4. 调用声明抛出异常的方法时,调用者必须对该异常进行处理,或者继续使用throws抛出。

EX6:

3.异常处理流程的总结:

1.程序先执行 try 中的代码
 2.如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.
3.如果找到匹配的异常类型, 就会执行 catch 中的代码
4.如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者.
5.无论是否找到匹配的异常类型, finally 中的代码都会被执行到(在该方法结束之前执行).
6.如果上层调用者也没有处理的了异常, 就继续向上传递.
7.一直到 main 方法也没有合适的代码处理异常, 就会交给 JVM 来进行处理, 此时程序就会异常终止.
4.自定义异常类:
创建自己的异常类,通常继承自 Exception或其子类 RuntimeException
public class CustomException extends Exception {public CustomException(String message) {super(message);}
}

异常处理机制的例子:

这就是今天要介绍的基本知识,喜欢的老友们来个三连吧!

http://www.lryc.cn/news/439583.html

相关文章:

  • JSON处理工具类
  • 2022高教社杯全国大学生数学建模竞赛C题 问题一(2) Python代码演示
  • ARACom Proxy Class API 概念
  • 【Scala入门学习】基本数据类型和变量声明
  • C#基础(13)结构体
  • Excel图片批量插入单元格排版处理插件【图片大师】
  • 应用性能优化实践(二)提升应用启动和响应速度
  • 接口测试系列文章专题
  • Unity Hub自动安装指定版本Unity的Android开发环境
  • 从0开始学ARM
  • 每日一题——第九十四题
  • Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
  • 后续学习规划 ----含我个人的学习路线,经历及感受
  • Skytower
  • 成型的程序
  • 卡尔曼滤波中Q和R与噪声的关系
  • sicp每日一题[2.10]
  • MCN跨国企业如何从0到1搭建ITSM运维体系
  • 【C++入门学习】7. 类型
  • 视频服务器:GB28181网络视频协议
  • vue3 一次二次封装element-plus组件引发的思考
  • [Web安全 网络安全]-文件读取与下载漏洞
  • 2024.9.12(k8s环境搭建2)
  • Redis 字典的哈希函数和 rehash 操作详解
  • 汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用
  • Halo 开发者指南——项目运行、构建
  • 【C++】——list
  • 07_Python数据类型_集合
  • 结合人工智能,大数据,物联网等主流技术实现业务流程的闭环整合的名厨亮灶开源了
  • vue环境搭建相关介绍