当前位置: 首页 > 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 是异常类的顶级父类,如果将它放在首位,那么后面的代码块将永远不能执行,所以必须放在最后。

http://www.xdnf.cn/news/873955.html

相关文章:

  • PaddleOCR(1):PaddleOCR介绍
  • 雷达流速仪相关介绍
  • 微信小程序开发一个自定义组件的详细教程
  • Haystack:AI与IoT领域的全能开源框架
  • 996引擎-前端组件:富文本(RichText)
  • 研究探析 | 高速摄像机在一种新型冲击压痕技术及其动态标定方法中的应用
  • unix/linux,sudo,其发展历程详细时间线、由来、历史背景
  • Origin如何仅删除奇数行或偶数行的数据
  • shell脚本总结14:awk命令的使用方法
  • 【力扣链表篇】203.移除链表元素
  • DIC技术助力金属管材全场应变测量:高效解决方案
  • 线程的生命周期与数量设置
  • 鸿蒙Navigation路由导航-基本使用介绍
  • SwiftUI 数据绑定与视图更新(@State、@ObservedObject、@EnvironmentObject)
  • 区块链架构深度解析:从 Genesis Block 到 Layer 2
  • 机器学习的数学基础:假设检验
  • 题海拾贝:P2347 [NOIP 1996 提高组] 砝码称重
  • 备战2025年全国青少年信息素养大赛-图形化编程挑战赛—省赛—每日一练—绘制立体图形
  • http协议,get,post两种请求方式
  • ArcGIS Pro 3.4 二次开发 - 共享
  • yoloe优化:可支持点提示进行检测分割
  • React 性能监控与错误上报
  • Dockerfile基础
  • SpringCloudAlibaba微服务架构
  • AI在网络安全领域的应用现状和实践
  • 代码训练LeetCode(21)跳跃游戏2
  • vivo y300pro 无法连接adb
  • 【算法篇】逐步理解动态规划模型4(子数组问题)
  • 【BUG解决】关于BigDecimal与0的比较问题
  • linux_centos7.x的ifconfig命令显示内容详解