java之认识异常

news2024/9/19 17:35:32

在 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.coloradmin.cn/o/2131875.html

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

相关文章

ChatGPT实战100例 - (21) 搞定汉字新解,o1-mini 在李继刚老师这扳回一局

文章目录 搞定汉字新解,o1-mini 在李继刚老师这扳回一局翻车开车飙车出图福利在这福利+1搞定汉字新解,o1-mini 在李继刚老师这扳回一局 昨天朋友圈刷爆了 李继刚老师 的 汉字新解,废话不说,上 prompt ;; 作者: 李继刚 ;; 版本: 0.1 ;; 模型: Claude Sonnet ;; 用途: 将一…

【2025】基于PHP职业病健康管理系统(源码+论文+部署讲解等)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

参数传了报错没传参数识别不到参数传丢

【记一次参数传值了但报错未传值的问题解决历程】 问题描述:同一个接口,用测试类调可以成功,用postman调用一直报错少参数,后又尝试了用idea自带的http调用,同样报错参数未传值。 如图,传值了报错未传值。…

怎样还原空白试卷?2024教你快速还原空白试卷的软件

怎样还原空白试卷?2024教你快速还原空白试卷的软件 还原空白试卷是一项常见的需求,尤其是在教学、考试准备或练习时需要重新使用原有试卷时。通过使用AI技术或专业的图片编辑软件,能够快速去除试卷上的答案或标记,恢复原始空白状…

卷积神经网络(二)CIFAR100类别分类

一.数据介绍 总共一百个类,每个类有600个图像。每类500个训练图像,100个测试图像。没填图像都带有一个"精细"标签(它所属的类)核一个粗糙标签(它所属的超类) 二.API使用 用于构建CNN模型的API …

构建全景企业画像,深度评估企业风险,保障商业利益!

战略投资、招商引资、融资贷款、市场合作等商业行为,都需要对目标企业进行尽调,评估企业的风险。依据评估结果,投资者可以识别并量化潜在投资风险,保障投资的安全性和收益性;招商工作可以甄别优质企业,确保引进高质量、…

Android 内置应用裁剪

文章目录 查询目标 APK 的 Android.mk(或 Android.bp)文件apk裁剪方式1.注释或删除.mk/.bp文件2.将 APK 名称加入“OVERRIDES”配置项中3.自定义“PRODUCT_PACKAGES_REMOVE”配置项 查询目标 APK 的 Android.mk(或 Android.bp)文件…

【YashanDB知识库】执行sql语句时报YAS-04401 data type - expected, but BLOB got异常

本文转载自YashanDB官方网站,具体链接为:执行sql语句时报YAS-04401 data type - expected, but BLOB got异常 问题现象 某客户的.net小程序在通过.net驱动执行业务时,报YAS-04401 data type - expected, but BLOB got异常: 问题…

2024/9/13 数学20题

根的个数问题: 数列:

OPENAIGC开发者大赛企业组银奖 | Gambit-AI智能合同审核助手

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给您…

SSO单点登录简易认证流程

流程说明 导入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>模拟代码 客户端 import cn.hutool.core.codec.Base64; import cn.hutool.crypto…

已开源!无限场景生成和高效数据迁移:3D金字塔扩散模型斩获ECCV24 Oral

作者主页&#xff1a; https://yuheng.ink/ 论文标题&#xff1a; Pyramid Diffusion for Fine 3D Large Scene Generation 导读&#xff1a; 本文通过设计一种新颖的金字塔扩散模型&#xff0c;为三维室外场景生成提供了一种从粗到细的策略。本文对金字塔扩散模型进行了大量实…

云平台虚机卡顿问题分析

电信云中宿主机分配的虚机运行时出现卡顿问题,可能由多种因素导致。为了准确分析并定位原因,可以从以下几个方面进行排查: 1. 资源使用情况 检查CPU、内存和磁盘使用情况: 使用工具检查虚拟机的CPU、内存和磁盘使用情况,确认是否存在资源瓶颈。如果发现资源使用率较高,特…

4052A/4052B/4052C/4052D/4052E/4052F/4052G /4052H信号/频谱分析仪

4052A/4052B/4052C/4052D/4052E/4052F/4052G /4052H信号/频谱分析仪 苏州新利通 Ceyear 4052具备出色的测试动态范围、相位噪声、幅度精度和测试速度&#xff0c;具备频谱分析、I/Q分析、实时频谱分析、瞬态分析、矢量信号分析、脉冲分析、音频分析等丰富的测试功能。 Ceyear…

C++ | Leetcode C++题解之第400题第N位数字

题目&#xff1a; 题解&#xff1a; class Solution { public:int findNthDigit(int n) {int d 1, count 9;while (n > (long) d * count) {n - d * count;d;count * 10;}int index n - 1;int start (int) pow(10, d - 1);int num start index / d;int digitIndex i…

【Elasticsearch】-7.17.24版本接入

官网 https://www.elastic.co/cn/downloads/elasticsearch 本项目基于windows环境下&#xff0c;其他环境操作类似 1、初始化配置 打开config/elasticsearch.yaml 添加如下配置 cluster.name: dams_clusternetwork.host: 127.0.0.1 http.port: 9200# 不开启geo数据库 inge…

【软件设计师真题】下午题第五大题---面向对象程序设计

系列文章目录 1.【软考之软件设计师】PPT课件 2.【软考之软件设计师】学习笔记 3.【软考之软件设计师】上午题—信管网(每天更新) 4.【软考之软件设计师】上午题—希赛网(每天更新) 5.【软件设计师真题】下午题第一大题—数据流图设计 6.【软件设计师真题】下午题第二大题…

小众语言ruby在苹果中的初步应用

前言 感觉Ruby在苹果系统中充当一种脚本语言来使用。 1、直接输入ruby没有反应 2、可显示结果的命令 ruby -e "puts Goodbye, cruel world!" 效果如下图&#xff1a; 说明苹果系统中ruby已经安装完毕&#xff0c;或者就是自带的。 3、编辑运行第一个ruby程序 输入…

手把手教你用护核纪元地心护核者用服务器开服联机

1、购买后登录服务器面板&#xff08;百度莱卡云面板&#xff09; 登录面板的信息在绿色的登陆面板按键下方&#xff0c;不是你的莱卡云账号 进入控制面板后会出现正在安装的界面&#xff0c;安装大约3分钟&#xff08;如长时间处于安装中请联系我们的客服人员&#xff09; 2、…

代码随想录算法训练营第13天|二叉树基础知识、递归遍历、迭代遍历、层序遍历、116. 填充每个节点的下一个右侧节点指针

目录 二叉树基础深度和高度满二叉树和完全二叉树二叉搜索树和平衡二叉搜索树二叉树节点定义前中后序遍历 递归遍历前序递归遍历—144. 二叉树的前序遍历 迭代遍历层序遍历116. 填充每个节点的下一个右侧节点指针1、题目描述2、思路3、code 二叉树基础 深度和高度 满二叉树和完…