Java中常见的异常类

在Java中,异常(Exception)是指在程序执行过程中可能出现的错误或异常情况。Java通过异常类来表示这些异常情况,异常类是从java.lang.Exception类继承的。异常类可以分为两大类:Checked异常和Unchecked异常。

  1. Checked异常:检查异常
    Checked异常是在编译时被检查的异常,即在代码编译阶段就需要处理这些异常,否则无法通过编译。这些异常通常表示程序可能出现的外部影响,需要程序员进行预防或处理。

  2. Unchecked异常:运行时异常
    Unchecked异常是在运行时才会被检查的异常,编译器不要求必须处理这些异常。这些异常通常表示程序内部错误或逻辑问题,应该通过代码的合理编写来避免。

在Java中,异常类形成了一个继承层级结构,java.lang.Throwable是所有异常的基类,它有两个主要的子类:java.lang.Errorjava.lang.ExceptionError表示系统级别的错误,通常是不可恢复的,而Exception则是可处理的异常。

异常处理的方式包括:

  • 使用trycatchfinally块来捕获和处理异常。
  • 使用throws关键字声明方法可能抛出的异常,让调用者来处理。
  • 创建自定义异常类,继承自Exception,以便处理特定的异常情况。

以下是一个简单的Java异常处理示例:

public class ExceptionExample {public static void main(String[] args) {try {int result = divide(10, 0);System.out.println("Result: " + result);} catch (ArithmeticException e) {System.err.println("Error: Division by zero");}}public static int divide(int a, int b) {return a / b;}
}

在这个示例中,divide方法可能抛出ArithmeticException,我们通过trycatch块捕获并处理这个异常。

以下是一些常见的异常类和它们的描述:

1. NullPointerException (运行时异常): 当尝试在一个对象引用上调用方法或访问属性,而该引用为null时抛出。

2. IllegalArgumentException (运行时异常): 当传递给方法的参数不合法或无效时抛出,例如传递了不允许的参数值。

3. IllegalStateException (运行时异常): 在对象的状态不适合于执行特定操作时抛出,例如在未初始化对象上调用方法。

4. ArrayIndexOutOfBoundsException (运行时异常): 当尝试访问数组中不存在的索引时抛出。

5. ArithmeticException (运行时异常): 在数学运算中出现错误时抛出,例如除以零。

6. ClassCastException (运行时异常): 当试图将一个对象转换为不兼容的类类型时抛出,例如将不是子类的对象转换为某个类的实例。

7. FileNotFoundException (检查异常): 在尝试打开一个不存在的文件时抛出。

8. IOException (检查异常): 处理输入输出操作可能出现的异常,例如读写文件、网络通信等。

9. SQLException (检查异常): 处理数据库访问异常。

10. InterruptedException (检查异常): 在多线程编程中,当一个线程在等待另一个线程执行某个操作时被中断时抛出。

11. NoSuchElementException (运行时异常): 当访问集合(如List、Set)中不存在的元素时抛出。

12. OutOfMemoryError (错误): 在程序尝试分配更多内存而可用内存不足时抛出,通常表示程序内存泄漏或者分配不当。

13. StackOverflowError (错误): 当递归调用层次过深,导致栈空间耗尽时抛出。

14. NumberFormatException (运行时异常): 当字符串不能转换为数字时抛出,例如使用Integer.parseInt()方法时传递的字符串格式不正确。

简单代码示例

以下是一些Java中常见异常类的简单代码示例:

1. NullPointerException:

String str = null;
try {int length = str.length(); // This will throw NullPointerException
} catch (NullPointerException e) {System.out.println("NullPointerException caught: " + e.getMessage());
}

2. IllegalArgumentException:

int value = -5;
if (value < 0) {throw new IllegalArgumentException("Value must be non-negative");
}

3. ArrayIndexOutOfBoundsException:

int[] numbers = {1, 2, 3};
try {int value = numbers[5]; // This will throw ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {System.out.println("ArrayIndexOutOfBoundsException caught: " + e.getMessage());
}

4. FileNotFoundException:

try {FileReader fileReader = new FileReader("myfile.txt"); // This will throw FileNotFoundException
} catch (FileNotFoundException e) {System.out.println("FileNotFoundException caught: " + e.getMessage());
}

5. IOException:

try {FileInputStream inputStream = new FileInputStream("file.txt");// Perform I/O operationsinputStream.close();
} catch (IOException e) {System.out.println("IOException caught: " + e.getMessage());
}

6. SQLException:

try {// Code that interacts with a database
} catch (SQLException e) {System.out.println("SQLException caught: " + e.getMessage());
}

7. InterruptedException:

try {Thread.sleep(1000); // This will throw InterruptedException if the thread is interrupted while sleeping
} catch (InterruptedException e) {System.out.println("InterruptedException caught: " + e.getMessage());
}

8. NumberFormatException:

String strNumber = "abc";
try {int number = Integer.parseInt(strNumber); // This will throw NumberFormatException
} catch (NumberFormatException e) {System.out.println("NumberFormatException caught: " + e.getMessage());
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/51268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE】Spring全家桶实现AOP-统一处理

【JavaEE】AOP&#xff08;2&#xff09; 文章目录 【JavaEE】AOP&#xff08;2&#xff09;1. 统一登录校验处理1.1 自定义拦截器1.2 将自定义拦截器加入到系统配置1.3 测试1.4 对于静态资源的处理1.5 小练习&#xff1a;统一登录拦截处理1.6 拦截器原理1.6.1 执行流程1.6.2 源…

matlab 最小二乘拟合二维直线(直接求解法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 平面直线的表达式为: y = k x + b

C++学习第十八天----switch语句

1. &#xff1f;:运算符 条件运算符&#xff0c;又叫三元运算符&#xff1b; 该运算符的通用格式为&#xff1a; expression1&#xff1f;expression2 &#xff1a;expression3&#xff1b; 意义是假如1为true&#xff0c;则整个条件表达式的值为2的值&#xff0c;否则为3的值&…

《游戏编程模式》学习笔记(八)双缓冲模式 Sequencing Patterns

双缓冲模式的意图 双缓冲模式&#xff0c;使用序列操作来模拟瞬间或者同时发生的事情 具体定义 双缓冲模式定义缓冲类封装了缓冲&#xff1a;一段可改变的状态。 这个缓冲被增量地修改&#xff0c;但我们想要外部的代码将修改视为单一的原子操作。 为了实现这点&#xff0c;…

Programming abstractions in C阅读笔记:p127-p129

《Programming Abstractions In C》学习第51天&#xff0c;p127-p129&#xff0c;总结如下&#xff1a; 一、技术总结 1. string library 掌握常用函数如strlen&#xff0c;strcpy用法。 2.buffer overflow(缓冲区溢出) (1)什么是buffer? p129&#xff0c;Arrays that a…

死锁的典型情况、产生的必要条件和解决方案

前言 死锁&#xff1a;多个线程同时被阻塞&#xff0c;他们中的一个或全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 目录 前言 一、死锁的三种典型情况 &#xff08;一&#xff09;一个线程一把锁 &#xff08;二&#xff09;…

==和===的区别(经典面试题,你不知道的细节)

全等运算符 又叫全等运算符&#xff0c;结果会返回一个布尔值&#xff0c;在数据类型相同的情况下&#xff0c;会比较值&#xff0c;值相同才返回true "1" 1 // false NaN NaN // false undefined undefined // true相等运算符 相等运算符在比较两个变量是否相…

分布式锁解决方案

分布式锁解决方案 背景解决方案redisson 分布式锁 实战zookeeper 分布式锁 实战结论代码地址背景 由于分布式或者集群部署项目时,在某些业务场景下需保证资源的原子性、一致性和互斥性。 如果把房子比作资源,通俗的来讲,我无论在那个城市生活,这个房子我先租的,再没有退房…

dolphinscheduler的僵尸任务清理和清理一直在运行的任务状态

dolphinscheduler的僵尸任务清理 界面操作不了的 只能去数据库更改状态或则删除掉 原因&#xff1a;海豚调度中有几百条僵尸任务&#xff0c; 界面怎么也删不掉&#xff0c;想从数据库中删除&#xff0c;开始查找从数据库删除的办法。 参考以下脚本&#xff0c;结合我库中僵尸…

缓存的设计方式

问题情况&#xff1a; 当有大量的请求到内部系统时&#xff0c;若每一个请求都需要我们操作数据库&#xff0c;例如查询操作&#xff0c;那么对于那种数据基本不怎么变动的数据来说&#xff0c;每一次都去数据库里面查询&#xff0c;是很消耗我们的性能 尤其是对于在海量数据…

抖音火山引擎推出免费域名DNS和公共DNS服务

抖音旗下的云计算服务火山引擎最近推出了"TrafficRoute DNS 套件"服务&#xff0c;其中包括两款产品&#xff0c;对软希网来说非常有用。 1.域名DNS&#xff1a; 这是一个用于网站域名的DNS服务&#xff0c;可以加速域名解析速度&#xff0c;从而提升网站的速度。如…

回归预测 | MATLAB实现GA-RF遗传算法优化随机森林算法多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GA-RF遗传算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现GA-RF遗传算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍程…

mysql的登录与退出

mysql是c/s架构&#xff0c;意味着同时要有客户端和服务端 1 找到客户端。mysql.exe的安装目录 打开命令行 2 输入对应的服务器的ip&#xff0c;如果是本地&#xff0c;就是Localhost&#xff0c;如果是远程服务器&#xff0c;那就输入对应ip/域名。并且指定mysql监听的端口 …

机器视觉之特征匹配

特征匹配是计算机视觉中的一个重要任务&#xff0c;它用于寻找两幅或多幅图像中相对应的特征点&#xff0c;从而识别、跟踪或配准对象。下面是一个使用C和OpenCV进行特征匹配的简单示例&#xff0c;使用SIFT特征检测和FLANN匹配器&#xff08;快速最近邻搜索&#xff09;&#…

混合面试题

索引在单表中建议不要创建的数量超过6个&#xff0c;在大的字段上不要建立索引例如书的目录不要以文章的一个长句子为目录索引 mybatis是半自动的&#xff0c;是JDBC的浅封装&#xff0c;以sql语句的工作量换取了程序执行的高灵活性。 foreach标签&#xff1a;用于循环语句&a…

做一个蛋糕店小程序需要哪些步骤?

对于一些不懂技术的新手来说&#xff0c;创建蛋糕店小程序可能会感到有些困惑。但是&#xff0c;有了乔拓云平台的帮助&#xff0c;你可以轻松地创建自己的蛋糕店小程序。下面&#xff0c;我将为大家详细介绍一下具体的操作步骤。 首先&#xff0c;登录乔拓云平台并进入后台管理…

Mysql报错 mysqladmin flush-hosts

出现这个的原因是错误连接达到数据库设置的最大值。 此时需要释放重置连接最大值。 进入mysql使用命令 flush-hosts;环境说明&#xff1a; 内网测试服务器192.168.18.251 为WEB服务器&#xff0c;安装了mysql; 内网音视频转码服务器192.168.18.253安装了转码工具&#xff0…

Java“牵手”根据关键词搜索(分类搜索)义乌购商品列表页面数据获取方法,义乌购API实现批量商品数据抓取示例

义乌购商城是一个网上批发购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取义乌购商品列表和商品详情页面数据&#xff0c;您可以通过开放平台的接口或者直接访问义乌购商城的网页来获取商品详情信息。以下是两种常用方法…

网络安全---Ring3下动态链接库.so函数劫持

一、动态链接库劫持原理 1.1、原理 Unix操作系统中&#xff0c;程序运行时会按照一定的规则顺序去查找依赖的动态链接库&#xff0c;当查找到指定的so文件时&#xff0c;动态链接器(/lib/ld-linux.so.X)会将程序所依赖的共享对象进行装载和初始化&#xff0c;而为什么可以使用…

[软件工具]精灵标注助手目标检测数据集格式转VOC或者yolo

有时候我们拿到一个数据集发现是xml文件格式如下&#xff1a; <?xml version"1.0" ?> <doc><path>C:\Users\Administrator\Desktop\test\000000000074.jpg</path><outputs><object><item><name>dog</name>…