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

Java异常信息

Java异常处理

什么是异常?

程序运行时可能出现的一些错误称为异常。异常是一个在程序执行期间发生的事件,它中断了正在执行的程序的正常指令流。

捕捉异常

Java语言的异常捕获结构由:try、catch 和 finally 3部分组成。
try 语句块存放可能发生异常的Java语句
catch 程序块在 try 语句块之后,用来激发被捕获的异常;
finally 语句块是异常处理的最后执行部分,是必须执行的语句块。

语法:

 try {//程序代码块} catch (Exception1 e1) {//对 Exception1的处理} catch (Exception2 e2) {//对 Exception2的处理} finally {//必须执行的程序}

通过语法可知,异常处理器大致分为 try - catch 语句块 和 finally 语句块。

1、try - catch 语句块

示例代码:

public static void main(String[] args) {try {String str = "刘亦菲";System.out.println("名字是:" + str);int age = Integer.parseInt("20L");System.out.println(age);} catch (Exception e) {e.printStackTrace();}System.out.println("程序结束");}

如下图所示,程序仍然输出了最后的提示信息,没有因为异常而终止程序。
在这里插入图片描述
通常,异常处理常用下面三个函数来获取异常信息:

  1. e.printStackTrace():指出异常类型、性质、栈层次以及出现在程序中的位置
  2. e.getMessage():输出错误性质
  3. e.toString():给出异常的类型与性质
2、finally 语句块

finally 语句块是必须执行的。但是也有4种特殊情况不能执行:

  1. finally 语句块中出现异常
  2. 程序所在线程死亡
  3. 关闭 CPU
  4. 在前面的代码使用了 System.exit() 退出程序
Java 常见的异常
自定义异常

用户可以通过继承 Exception 类进行自定义异常。

自定义异常步骤:

  1. 创建自定义异常类
  2. 方法中 throw 抛出异常对象
  3. 如果在抛出异常的方法中处理异常,通过 try - catch 语句块捕获并且处理;否则在方法的声明处通过 throws 关键字 声明要抛出的异常,并进行下一步操作
  4. 调用出现异常的方法时捕获异常

示例:

public class MyException extends Exception{ // 创建自定义异常,继承 Exception 父类public MyException(String errorMessage){ // 构造方法super(errorMessage); // 父类构造方法}
}

创建类,并且使用自定义异常

public class Tran {static int sum(int num1, int num2) throws MyException {if (num1 < 0 || num2 < 0) {throw new MyException("不可以使用负数");}if (num1 > 100 || num2 > 100) {throw new MyException("数字太大");}return num1 + num2;}public static void main(String[] args) {try {int result = sum(102,190);System.out.println(result);}catch (MyException e){System.out.println(e);}}
}

在这里插入图片描述

throws 和 throw

throws 关键字应用在声明方法时,表示此处可能抛出异常,多个异常使用逗号分开。

static int sum(int num1, int num2) throws MyException, FileNotFoundException,ArrayIndexOutOfBoundsException {}

throw 关键字通常用在方法体中,表示抛出一个异常对象。程序执行到 throw 立即停止,后面的语句不执行

注意: catch 语句顺序

代码示例:

public class Tran {static int chuFa(int num1, int num2) throws MyException {if (num2 < 0) {throw new MyException("除数不可以使用负数");}return num1 / num2;}public static void main(String[] args) {try {int result = chuFa(102, -1);System.out.println(result);} catch (MyException e) {System.out.println(e);} catch (ArithmeticException e) {System.out.println(e);} catch (Exception e) {System.out.println(e);}}
}

如上述代码,连续三次 catch,但是因为 Exception 是异常类的顶级父类,如果将它放在首位,那么后面的代码块将永远不能执行,所以必须放在最后。

相关文章:

  • “详规一张图”——香港土地利用数据
  • 6. MySQL基本查询
  • 如何安装并使用RustDesk
  • 【BUG解决】关于BigDecimal与0的比较问题
  • MySQL 表的内连和外连
  • RAG-Gym:一个用于优化带过程监督的代理型RAG的统一框架
  • 关于Dify聊天对话名称无法自动生成的原因和解决方法
  • java的纪录类--Record类
  • Elasticsearch中的自定义分析器(Custom Analyzer)介绍
  • JavaScript基础:运算符
  • 使用cephadm离线部署reef 18版并配置对接openstack
  • 使用Prometheus实现微服务架构的全面监控
  • Java Stream 高级实战:并行流、自定义收集器与性能优化
  • 2025.6.4总结
  • Python Day43
  • linux_centos7.x的ifconfig命令显示内容详解
  • Vehicle HAL(4)--vhal 的属性如何配置?
  • 泰迪杯特等奖案例深度解析:基于量子启发优化与多尺度时空建模的港口物流智能调度系统
  • unix/linux,sudo,其内部结构机制
  • 分布式训练下的多进程环境
  • jsp商务网站建设/湖南网站设计外包费用
  • php做原生直播网站/近期发生的重大新闻
  • 如今做啥网站能致富/网络营销的目的是什么
  • 优化网站的软件下载/广告软文范例大全100
  • 拼车网站的建设雨实现/企业网站模板 免费
  • 网站页脚信息/模板下载网站