Java中有什么异常机制? 有哪些异常分类? 常见异常的详解以及解决异常思路?

news/2024/11/16 2:57:44/
Java中的异常机制是一种处理程序在运行时可能发生的不可预测情况的方式。异常是指在程序执行期间遇到的错误或其他意外事件,它会中断程序的正常执行流程。

Java中的异常分为两类:Checked Exception(已检查异常)和Unchecked Exception(未检查异常)。其中Checked Exception需要在编译时捕获并处理,否则代码无法通过编译;而Unchecked Exception则不要求必须在编译时进行处理,可以选择捕获或者将其抛出。

Java中常见的异常有以下几种:

  1. NullPointerException(空指针异常):当应用程序试图访问null对象时抛出。

解决思路:避免使用null引用,或者在使用之前进行非空校验。

代码示例:

String str = null;
// 不进行非空校验,会抛出NullPointerException
int length = str.length();
// 进行非空校验
if (str != null) {int length = str.length();
}
  1. ArrayIndexOutOfBoundsException(数组越界异常):当应用程序试图访问数组中不存在的元素或者访问超出数组范围的元素时抛出。

解决思路:检查数组下标是否越界,或者动态调整数组的长度。

代码示例:

int[] arr = {1, 2, 3};
// 当访问的下标大于等于数组长度时,会抛出ArrayIndexOutOfBoundsException
int value = arr[3];
  1. ClassCastException(类转换异常):当试图将一个对象强制转换为它所不属于的类时抛出。

解决思路:避免使用错误类型的对象进行类型转换,或者在转换之前进行类型判断。

代码示例:

Object obj = "hello";
// 非法的类型转换,会抛出ClassCastException
Integer num = (Integer) obj;
// 判断对象是否是正确的类型
if (obj instanceof String) {String str = (String) obj;
}
  1. IllegalArgumentException(非法参数异常):当传入的参数不符合方法规范时抛出。

解决思路:检查参数是否符合方法规范,并给出明确的错误提示。

代码示例:

public void doSomething(String param) {// 参数为空,抛出IllegalArgumentExceptionif (param == null || param.length() == 0) {throw new IllegalArgumentException("Invalid parameter: " + param);}// ...
}
  1. ArithmeticException(算术异常):当试图除以零或取模时抛出。

解决思路:避免除数为零或者取模的模数为零,或者对于可能存在此类异常的情况进行特殊处理。

代码示例:

int a = 10;
int b = 0;
// 当除数为零时,会抛出ArithmeticException
int c = a / b;int d = 10;
int e = 0;
// 对于除数为零的情况进行特殊处理
int f = (e == 0) ? 0 : d / e;

在处理异常时,我们需要根据具体的业务场景和需求来选择适当的处理方式。常见的处理方式包括打印异常信息、记录异常日志、返回错误信息或重新尝试执行等。以下是一个示例代码块:

try {// 可能会抛出某些异常的代码
} catch (Exception e) {// 打印异常信息e.printStackTrace();// 记录异常日志logger.error("Some error happened", e);// 返回错误信息return ResponseEntity.badRequest().body("Some error happened");// 重新尝试执行// ...
}

http://www.ppmy.cn/news/60722.html

相关文章

确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)

前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言初阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:讲解c语言中的文件操作,文件的读取,输入输出,流的概念…

【第八篇:自动化建设前言】

难得请假休息1天,加更,加更~ 本周因为端午节放假,有更多时间准备,预计会再加更两篇 写在前面 在第上一篇中我给大家展示的是关于测试工具研发的内容,在本篇和后面三篇文章我将中给大家拆解展示是在日常的工作中关于自动化建设部分的内容。然后再之后的两篇我将给大家介…

现代CMake高级教程 - 第 9 章:分支与判断

双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 第 9 章:分支与判断 BOOL 类型的值 通常来说 BOOL 类型的变量只有 ON/OFF 两种取值。但是由于历史原因,TRUE/FALSE 和 YES/NO 也可以表示 BOOL 类型。个人建议同学们始终使用 ON/OFF 避免混淆。…

云上网络规划CIDR地址划分的参考示例

CIDR规则 0000 0000. //预留 0000 0000. //region Id 区域,例如北京、上海 000 //vpc Id 区域内部不同子网,例如北京1机房、2机房0 0000. //vSwitch Id 可用区机房,例如北京1可用区机房1的交换机 0000 0000. //resoure Id 交换机下不…

【C++初阶】类和对象(二)

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C初阶 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C初阶】…

力扣刷题Day12

239. 滑动窗口最大值 (此题逻辑真心牛皮) 做此题之前,首先明确此题的目的。我最开始没搞明白此题目的,看代码的时候卡死。 copy他人代码: from collections import dequeclass MyQueue: #单调队列(从大到小def __ini…

档案馆库房环境温湿度空气质量等相关要求

档案库房防潮工作,就是要将库内相对湿度控制在规定的范围之内,这个范围就是由建设部和国家档案局共同批准颁布的强制性行业标准《档案馆建设设计规范》对档案库房的温湿度范围已作出明确的要求:温度14℃~24℃,湿度45%&…

NECCS|全国大学生英语竞赛C类|词汇和语法|词汇题|21:03~21:53

词汇题 语法题 情景对话题 目录 一、词汇题 1. 基本词义辨析题 2. 同义词或近义词辨析题 3. 固定搭配 二、常见词组 一、词汇题 1. 基本词义辨析题 appropriate funds 拨款 slum- clearance programme 贫民窟清理计划 reject 拒绝接受&…