【必会面试题】Java异常类型

news2024/10/5 13:37:50

目录

在Java中,异常和错误都继承自java.lang.Throwable类,这是Java异常处理机制的基础类。Throwable类有两个主要的子类:Exception(异常)和Error(错误)。
在这里插入图片描述

  1. Error(错误):

    • 错误一般表示应用程序无法恢复的严重问题,如硬件故障、内存不足、虚拟机错误等。这类错误通常不应由应用程序捕获或试图处理,因为它们超出了程序的控制范围。常见的Error子类包括:
      • VirtualMachineError(虚拟机错误):如 OutOfMemoryError(内存溢出)、StackOverflowError(堆栈溢出)。

      • ThreadDeath:线程终结。

      • LinkageError:类定义相关的问题,如 ClassNotFoundException(找不到类定义)。
        在这里插入图片描述

  2. Exception(异常):

    • 异常表示程序运行时可能遇到的问题,可以根据是否需要在编译时检查分为两大类:

    2.1 Checked Exception(检查异常,也称受检异常):

    • 这类异常在编译时必须被显式处理,要么通过try-catch块捕获,要么通过方法签名中的throws关键字声明抛出。常见的检查异常包括:
      • IOException:输入输出异常。
      • SQLException:数据库访问异常。
      • ClassNotFoundException:类未找到异常。

    2.2 Unchecked Exception(非检查异常,也称运行时异常):

    • 这类异常在编译时不需要显示处理,它们通常表示编程错误或在运行时才可能出现的不可预料的条件。常见的运行时异常包括:
      • NullPointerException:空指针异常。
      • ArrayIndexOutOfBoundsException:数组越界异常。
      • IllegalArgumentException:非法参数异常。
      • ClassCastException:类型转换异常。
      • NumberFormatException:数字格式异常。
      • ArithmeticException:算术异常,如除以零。
        在这里插入图片描述
  3. 用户自定义异常:

    • 开发者可以根据需要自定义异常类,通常继承自Exception或其子类。自定义异常可以提供更具体的错误信息,便于调试和理解程序中的问题。
//定义一个自定义异常类,继承自现有的异常类,比如 Exception 或某个特定的已存在异常类。
public class CustomException extends Exception {
    // 构造方法可以接收一个字符串参数,用来描述异常的具体信息
    public CustomException(String message) {
        super(message);
    }
}

//使用这个自定义异常。
public class Main {
    public static void main(String[] args) {
        try {
            processData("invalid data");
        } catch (CustomException e) {
            System.out.println("Caught custom exception: " + e.getMessage());
        }
    }
    
    public static void processData(String data) throws CustomException {
        if ("invalid data".equals(data)) {
            // 当数据无效时,抛出自定义异常
            throw new CustomException("The provided data is invalid.");
        } else {
            // 正常处理数据的逻辑
            System.out.println("Processing data: " + data);
        }
    }
}

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

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

相关文章

MySQL之高级特性(三)

高级特性 分布式(XA)事务 存储引擎的事务特性能够保证在存储引擎级别实现ACID,而分布式事务则让存储引擎级别的ACID可以扩展到数据库层面,甚至可以扩展到多个数据库之间——这需要通过两阶段提交实现。MySQL5.0和更新版本的数据库已经开始支持XA事务了。XA事务中需…

时序分解 | Matlab实现SCSSA-VMD融合正余弦和柯西变异的麻雀搜索算法优化变分模态分解时间序列信号分解

时序分解 | Matlab实现SCSSA-VMD融合正余弦和柯西变异的麻雀搜索算法优化变分模态分解时间序列信号分解 目录 时序分解 | Matlab实现SCSSA-VMD融合正余弦和柯西变异的麻雀搜索算法优化变分模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab…

vue-2 组件传值

组件关系分类 父子关系非父子关系 父子通信流程 父组件通过props将数据传递给子组件 给子组件以添加属性的方式传值子组件内部通过 props 接收模板中直接使用 props 接收的值 父组件 Parent.vue <template><div class"parent" style"border: 3px s…

全网首发-Docker被封后的代理设置教程

最近上交、科大以及阿里的一些docker镜像&#xff0c;好像都因为不可控力导致无法访问。 所以&#xff0c;之前好多正常的一些镜像的打包都会报错&#xff1a; 比如&#xff1a; #1 [internall load build definition from Dockerfile#1transferring dockerfile:972B done#1 D…

Day 13:3072. 将元素分配到两个数组中 Ⅱ

Leetcode 3072. 将元素分配到两个数组中 Ⅱ 给你一个下标从 1 开始、长度为 n 的整数数组 nums 。 现定义函数 greaterCount &#xff0c;使得 greaterCount(arr, val) 返回数组 arr 中** 严格大于** val 的元素数量。 你需要使用 n 次操作&#xff0c;将 nums 的所有元素分配到…

一种基于混合协作的约束多目标优化的新型多群体进化算法

A novel multi-population evolutionary algorithm based on hybrid collaboration for constrained multi-objective optimization 原文链接: https://doi.org/10.1016/j.swevo.2024.101581 Wang Q, Li Y, Hou Z, et al. A novel multi-population evolutionary algorithm bas…

网络编程(一)基本概念、TCP协议

文章目录 一、概念&#xff08;一&#xff09;网络发展阶段1. ARPAnet阶段2. TCP/IP两个协议阶段3. 网络体系结构和OSI开放系统互联模型4. TCP/IP协议簇体系结构&#xff08;1&#xff09; 应用层&#xff1a;&#xff08;2&#xff09;传输层&#xff1a;&#xff08;3&#x…

集成算法实验(Bagging策略)

Bagging模型(随机森林) Bagging&#xff1a;训练多个分类器取平均 f ( x ) 1 / M ∑ m 1 M f m ( x ) f(x)1/M\sum^M_{m1}{f_m(x)} f(x)1/M∑m1M​fm​(x) 全称&#xff1a; bootstrap aggregation&#xff08;说白了就是并行训练一堆分类器&#xff09; 最典型的代表就是随…

聚鼎科技:装饰画哪里好卖

在当代社会&#xff0c;艺术与商业的界限日益模糊&#xff0c;装饰画作为一种既能美化空间又能体现个人品味的物品&#xff0c;受到了广泛的欢迎。但许多创作者和商家常常面临一个问题&#xff1a;《装饰画哪里好卖》? 要解决这个问题&#xff0c;我们需明白市场需求的重要性。…

斜率优化详解

斜率优化 [HNOI2008] 玩具装箱 状态转移方程&#xff1a; f i m i n ( f i , f j ( s u m i i − s u m j − j − L ) 2 ) i > j f_imin(f_i,f_j(sum_ii-sum_j-j-L)^2){i>j} fi​min(fi​,fj​(sumi​i−sumj​−j−L)2)i>j 设A为 s u m i i sum_ii sumi​i&…

代码随想录算法训练营第36天(py)| 贪心 | 452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

452. 用最少数量的箭引爆气球 力扣链接 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同…

【kubernetes】k8s集群安全机制 保姆级攻略

目录 一、认证&#xff08;Authentication&#xff09; Kubernetes 作为一个分布式集群的管理工具&#xff0c;保证集群的安全性是其一个重要的任务。API Server 是集群内部各个组件通信的中介&#xff0c; 也是外部控制的入口。所以 Kubernetes 的安全机制基本就是围绕保护 A…

CCNA 0基础入门

OSI & TCP/IP OSI参考模型 TCP/IP协议 应用层 ------↓表示层 ------>应用层会话层 ------↑传输层 ------>传输层网络层 ------>网络互联层链路层 ------>网络接口层物理层 ------>↑ 物理层 传输的信号以及网线以及接线 主要作用是产生并检测电…

怎么修改Visual Studio Code中现在github账号

git config --global user.name “你的用户名” git config --global user.email “你的邮箱” git config --global --list git push -u origin your_branch_name git remote add origin

手部出现这4种症状,可能是糖尿病先兆!务必及时监测血糖

糖尿病来袭&#xff0c;手部或先知&#xff01;出现这 4 种症状&#xff0c;务必尽快监测血糖 第一&#xff0c;手指麻木感明显&#xff0c;当持续性的高血糖损害手部血管与神经末梢时&#xff0c;便会导致手指产生麻木以及刺痛之感。而且随着血糖不断升高&#xff0c;受损的血…

【QT Creator软件】解决中文乱码问题

QT Creator软件解决中文乱码问题 问题描述&#xff1a;Qtcreator安装好后打印中文在控制台输出乱码 在网上也查找了修改编辑器的默认编码为UTF-8&#xff0c;但是仍然没有任何作用&#xff0c;于是有了以下的解决方案 原因剖析&#xff1a;因为项目的编码与控制台的编码不一致…

Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件

打包与运行 window版本上制作 我们要把idea中的程序抽取出来作为一个独立的jar包 把jar包放到服务器上 服务器是长期运行的 我们就能随时访问了 在Maven的生命周期中选择package 打包功能 在资源管理器中查找 java -jar 文件名.jar java -jar 文件名.jar 但是我们在测试…

kotlin 中的字符串

一、字符类访问 1、字符串的访问跟js一样&#xff0c;可以使用索引来访问或者直接循环。 fun main() {val a: String "2024"// 方式一&#xff1a;for (item in a) {println(item) // 输出每一个字符}// 方式二&#xff1a;println("${a[0]}, ${a[1]}, ${a[2…

纯干货科普!水浸传感器品牌该怎么选?

在现代化生产过程中&#xff0c;漏水是常见的安全隐患之一。特别是机房、档案馆等高精密设备较多的场合&#xff0c;一旦没有及时解决漏水问题&#xff0c;就有可能导致线路故障、设备损坏甚至业务办理。绝大部分管理人员会选择安装水浸传感器&#xff0c;它能够帮我们及时检测…

bugku---misc---easy_nbt

1、题目描述 2、下载附件&#xff0c;解压之后得到 3、查找资料发现&#xff1a;NBT文件是Minecraft游戏数据文件&#xff0c;其中包含以命名二进制标签(NBT)格式保存的数据。这种格式用于存储大量二进制数据&#xff0c;通常包含有关Minecraft世界的信息。NBT数据通常以.dat文…