异常风云:解码 Java 异常机制

哈喽,各位小伙伴们,你们好呀,我是喵手。

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  在Java开发中,异常是程序中经常会遇到的一种情况。当程序出现错误或者异常情况时,Java提供了异常处理机制,以便程序能够有条理地处理这些情况。本文将介绍异常的含义以及在Java中的分类。

摘要

  异常是指程序在执行过程中遇到的错误或者异常情况。Java中的异常被分为两类:编译时异常和运行时异常。编译时异常在程序编译阶段就会被检测到,而运行时异常则是在程序运行过程中才会被检测到。

简介

  异常处理是Java程序开发中很重要的一部分。当程序发生异常时,通常会导致程序的中断和崩溃。为了更好地处理异常情况,Java引入了异常处理机制。异常处理可以保证程序在发生异常时能够继续执行,并且能够提供相应的错误信息。

源代码解析

  编译时异常和运行时异常是Java中的两种异常分类。编译时异常是指在程序编译阶段就会被检测到的异常,编译器会强制要求程序员在代码中处理这些异常。常见的编译时异常包括IOException、SQLException等。运行时异常则是指在程序运行过程中才会被检测到的异常,程序员可以选择处理或者不处理这些异常。常见的运行时异常包括NullPointerException、ArrayIndexOutOfBoundsException等。

// 编译时异常示例
public void readFile() throws IOException {
    File file = new File("example.txt");
    FileReader fileReader = new FileReader(file);
}

// 运行时异常示例
public void divide(int dividend, int divisor) {
    int result = dividend / divisor;
}

代码解析:

我上面给出的代码中包含了编译时异常和运行时异常的示例。

编译时异常示例:
  在readFile()方法中,使用了File和FileReader类来读取文件。这两个类的构造函数都声明了可能抛出IOException异常。因此,在方法签名中使用了throws IOException来声明该方法可能抛出该异常。编译器会强制要求调用该方法的代码处理或声明该异常。

运行时异常示例:
  在divide()方法中,进行了两个整数相除的操作。如果除数为0,将抛出ArithmeticException异常。在这个方法中,并没有在方法签名中声明该异常,因为它是运行时异常。运行时异常不需要显式声明和处理,但如果没有进行处理,程序将会抛出该异常并终止运行。

  总体来说,区分编译时异常和运行时异常的一种简单方式是看是否需要在方法签名中声明该异常。如果需要声明异常,则为编译时异常;如果不需要声明异常,则为运行时异常。编译时异常必须进行处理或声明,而运行时异常则不需要。

  如下是部分源码截图:

在这里插入图片描述

应用场景案例

  异常处理在实际的应用场景中非常常见。例如,当我们读取文件时,可能会遇到文件不存在或者无法读取的情况,这就属于编译时异常。又例如,在进行数学运算时,如果除数为0,会发生除零异常,这就属于运行时异常。通过合理的异常处理,可以保证程序的稳定性和健壮性。

优缺点分析

  异常处理机制的优点是能够更好地处理程序中的异常情况,保证程序的稳定性和可靠性。通过合理地处理异常,可以使程序能够继续执行,并且提供相应的错误信息。然而,异常处理也有一定的缺点,比如会增加代码的复杂性和执行效率。

类代码方法介绍

readFile()

  该方法用于读取文件,可能会抛出编译时异常IOException。

divide(int dividend, int divisor)

  该方法用于进行除法运算,可能会抛出运行时异常ArithmeticException。

Java代码测试用例

/**
 * @Author ms
 * @Date 2023-12-16 18:05
 */
public class ExceptionExample {

    public static void main(String[] args) {
        ExceptionExample example = new ExceptionExample();

        try {
            example.readFile();
            example.divide(10, 0);
        } catch (IOException e) {
            System.out.println("文件读取异常:" + e.getMessage());
        } catch (ArithmeticException e) {
            System.out.println("除法运算异常:" + e.getMessage());
        }
    }


    // 编译时异常示例
    public void readFile() throws IOException {
        File file = new File("example.txt");
        FileReader fileReader = new FileReader(file);
    }

    // 运行时异常示例
    public void divide(int dividend, int divisor) {
        int result = dividend / divisor;
    }
}

实际运行结果:

  根据如上测试用例,本地测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。

代码解析

  这段代码是一个简单的异常处理示例。它定义了一个名为ExceptionExample的类,并在main方法中进行了异常处理。

  在try块中,首先调用了example.readFile()方法,该方法可能会抛出IOException异常。如果发生了这个异常,catch块中的代码将被执行,打印出"文件读取异常:"加上异常的详细信息。

  接下来,调用了example.divide(10, 0)方法,该方法可能会抛出ArithmeticException异常。如果发生了这个异常,catch块中的代码将被执行,打印出"除法运算异常:"加上异常的详细信息。

  这种异常处理方式可以帮助我们捕获并处理程序中可能出现的异常,以避免程序异常终止。

全文小结

  本文介绍了Java中异常的概念和分类。异常是指程序在执行过程中遇到的错误或者异常情况。Java中的异常被分为编译时异常和运行时异常。编译时异常在程序编译阶段就会被检测到,而运行时异常则是在程序运行过程中才会被检测到。通过合理的异常处理,可以保证程序的稳定性和健壮性。

总结

  异常处理是Java程序开发中很重要的一部分。合理处理异常可以保证程序的稳定性和可靠性。在实际的应用场景中,我们常常会遇到各种异常情况,通过合理地处理异常,可以使程序能够正常运行,并提供相应的错误信息。在编写代码时,我们应该充分考虑各种异常情况,并进行相应的处理。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】《Octopus v2: On-device language model for super agent》,端侧大模型的应用案例

今年LLM的发展趋势之一,就是端侧LLM快速发展,超级APP入口之争异常激烈。不过,端侧LLM如何应用,不知道细节就很难理解。正好,《Octopus v2: On-device language model for super agent》这篇文章可以解惑。 对比部署在…

JTAG访问xilinx FPGA的IDCODE

之前调试过xilinx的XVC(Xilinx virtual cable),突然看到有人搞wifi-JTAG(感兴趣可以参考https://github.com/kholia/xvc-esp8266),也挺有趣的。就突然想了解一下JTAG是如何运作的,例如器件识别&…

普通话水平测试用朗读作品60篇-(练习版)

普通话考试题型有读单音节字词、读多音节字词、朗读作品和命题说话。 具体分值如下: 1、读单音节字词100个,占10分;目的考查应试人普通话声母、韵母和声调的发音。 2、读双音节词语50个,占20分;目的是除了考查应试人声…

骨传导耳机怎么选?精心挑选热销排行前五的骨传导耳机推荐!

近几年,骨传导耳机作为新型蓝牙耳机款式,已经得到大家有效认可,可以说已经适用于日常中的各种场景中,比如运动场景,凭借舒适的佩戴体验和保护运动安全的特点深受到运动爱好者的欢迎,作为一个经验丰富的数码…

Linux网络—DNS域名解析服务

目录 一、BIND域名服务基础 1、DNS系统的作用及类型 DNS系统的作用 DNS系统类型 DNS域名解析工作原理: DNS域名解析查询方式: 2、BIND服务 二、使用BIND构建域名服务器 1、构建主、从域名服务器 1)主服务器配置: 2&…

Windows主机入侵检测与防御内核技术深入解析

第2章 模块防御的设计思想 2.1 执行与模块执行 本章内容为介绍模块执行防御。在此我将先介绍“执行”分类,以及“模块执行”在“执行”中的位置和重要性。 2.1.1 初次执行 恶意代码(或者行为)要在被攻击的机器上执行起来,看起…

C语言----单链表的实现

前面向大家介绍了顺序表以及它的实现,今天我们再来向大家介绍链表中的单链表。 1.链表的概念和结构 1.1 链表的概念 链表是一种在物理结构上非连续,非顺序的一种存储结构。链表中的数据的逻辑结构是由链表中的指针链接起来的。 1.2 链表的结构 链表…

茴香豆:搭建你的RAG智能助理-笔记三

本次课程由书生浦语社区贡献者【北辰】老师讲解【茴香豆:搭建你的 RAG 智能助理】课程 课程视频:https://www.bilibili.com/video/BV1QA4m1F7t4/ 课程文档:Tutorial/huixiangdou/readme.md at camp2 InternLM/Tutorial GitHub 该课程&…

江苏开放大学2024年春《会计基础 050266》第二次任务:第二次过程性考核参考答案

电大搜题 多的用不完的题库,支持文字、图片搜题,包含国家开放大学、广东开放大学、超星等等多个平台题库,考试作业必备神器。 公众号 答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案&#…

记账本React案例(Redux管理状态)

文章目录 整体架构流程 环境搭建 创建项目 技术细节 一、别名路径配置 1.路径解析配置(webpack) ,将/解析为src/ 2.路径联想配置(vsCode),使用vscode编辑器时,自动联想出来src文件夹下的…

【java数据结构-优先级队列向下调整Topk问题,堆的常用的接口详解】

🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention多变量时间序列预测

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测 目录 SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测预测效果基本介绍…

【C++杂货铺】多态

目录 🌈前言🌈 📁多态的概念 📁 多态的定义及实现 📂 多态的构成条件 📂 虚函数 📂 虚函数重写 📂 C11 override 和 final 📂 重载,覆盖(重写…

力扣-1832.判断句子是否全为字母句

思路: 首先,我们初始化了一个长度为 26 的布尔值列表 exist,所有值都为 False,表示所有字母初始都未出现过。然后,我们遍历输入的字符串 sentence 中的每个字符。对于每个字符,我们通过计算其 ASCII 码值减去字母 a 的…

微信小程序关于主包大小不能超过1.5MB的问题

常规的解决办法有以下几种 1、把资源文件改成远程服务器的,比如png这些 2、进入如图的分析页面,能明确知道你哪个插件包太大,我这里之前echart的包就1mb,现在给他缩减到了500kb的样子 3、解决vant等npm包太大的问题&#xff0c…

用过最佳的wordpress模板

西瓜红,作为一种充满活力和激情的颜色,总是能给人留下深刻的印象。当这种鲜艳的色彩与经典的设计元素相结合时,就能打造出一款既时尚又实用的WordPress企业模板。今天,我们向您隆重推荐这款西瓜红经典配色WordPress企业模板。 这…

HarmonyOS-Next开源三方库 MPChart:打造出色的图表体验

点击下载源码https://download.csdn.net/download/liuhaikang/89228765 简介 随着移动应用的不断发展,数据可视化成为提高用户体验和数据交流的重要手段之一。在 OpenAtom OpenHarmony(简称“OpenHarmony”)应用开发中,一个强大而…

MIS微调SAM模型实时交互UI界面

前言 SAM模型的基本介绍可见SAM(Segment Anything Model)大模型使用--point prompt_sam大模型-CSDN博客 针对Meta团队去年发布的SAM大模型在医学图像分割领域表现性能较差的情况,笔者收集了一些MIS领域的数据集对SAM的架构进行fine tune&am…

架构师系列- 定时任务(四)- XXl-Job

XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,其中“XXL”是主要作者,大众点评许雪里名字的缩写 和ElasticJob的区别 相同点 E-Job和X-job都有普遍的用户基础和完整的技术文档,都…

吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.6-1.8

目录 第一门课:第二门课 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第一周:深度学习的 实践层面 (Practical aspects of Deep Learning)…