高级java每日一道面试题-2024年11月15日-基本篇-Exception与Error包结构?

如果有遗漏,评论区告诉我进行补充

面试官: Exception与Error包结构?

我回答:

在 Java 高级面试中,了解 ExceptionError 的包结构及其区别是非常重要的。Java 的异常处理机制是基于类层次结构的,ExceptionError 都继承自 Throwable 类。下面详细解释 ExceptionError 的包结构及其区别。

包结构图

下面是 ExceptionError 的包结构图:

java.lang.Throwable|+-- java.lang.Exception|    ||    +-- java.lang.RuntimeException|    |    ||    |    +-- java.lang.NullPointerException|    |    +-- java.lang.ArrayIndexOutOfBoundsException|    |    +-- java.lang.ClassCastException|    |    +-- java.lang.IllegalArgumentException|    |    +-- java.lang.UnsupportedOperationException|    |    +-- ...|    ||    +-- java.io.IOException|    |    ||    |    +-- java.io.FileNotFoundException|    |    +-- java.io.EOFException|    |    +-- ...|    ||    +-- java.sql.SQLException|    +-- java.lang.ClassNotFoundException|    +-- java.lang.NumberFormatException|    +-- ...|+-- java.lang.Error|+-- java.lang.VirtualMachineError|    ||    +-- java.lang.OutOfMemoryError|    +-- java.lang.StackOverflowError|    +-- ...|+-- java.lang.LinkageError|    ||    +-- java.lang.NoClassDefFoundError|    +-- java.lang.UnsatisfiedLinkError|    +-- ...|+-- java.lang.AssertionError+-- ...

Throwable类

  • 定义:Throwable类是Java中所有错误(Error)和异常(Exception)的父类。
  • 特点:只有继承于Throwable的类或者其子类才能够被抛出。

Exception类

  • 定义:Exception是表示程序可能可以处理的异常情况的基类,它继承自Throwable类。

  • 分类

    • 可检查异常(Checked Exceptions):这类异常在编译时会被检查,如果代码中可能抛出这类异常,而程序员又没有进行处理(比如使用try-catch捕获,或者使用throws声明抛出),则编译器会报错。常见的可检查异常有IOException、FileNotFoundException、SQLException等。
    • 不可检查异常(Unchecked Exceptions):这类异常在编译时不会被检查,运行时才可能出现。它们通常是运行时错误,不强制要求显式捕获或处理。不可检查异常主要包括RuntimeException及其子类,如ArithmeticException(除数为零异常)、NullPointerException(空指针异常)、IndexOutOfBoundsException(数组越界异常)等。
主要子类
  • java.lang.Exception:所有Java异常的父类。
  • RuntimeException:表示编程错误,如空指针异常(NullPointerException)、数组越界异常(ArrayIndexOutOfBoundsException)等。这些异常通常是由于程序逻辑错误引起的,不需要强制捕获。
  • IOException:表示输入输出操作中的异常,如文件未找到(FileNotFoundException)、I/O 错误(IOException)等。
  • SQLException:表示与数据库操作相关的异常。
  • ClassNotFoundException:表示在类路径中找不到指定的类。
  • NumberFormatException:表示字符串转换为数字时格式不正确。

Error类

  • 定义:Error是表示程序运行过程中的严重问题,通常是应用程序无法处理的问题。它包括了诸如内存溢出(OutOfMemoryError)、虚拟机错误(VirtualMachineError)、系统崩溃等致命错误。
  • 特点
    • 表示严重的系统错误,通常是不可恢复的。
    • 不应该在应用程序中捕获和处理。
    • 通常由虚拟机或系统资源问题引起。
主要子类
  • java.lang.Error:所有Java错误的父类。
  • java.lang.VirtualMachineError:表示JVM内部错误,通常会导致整个JVM崩溃。
  • java.lang.OutOfMemoryError:表示内存不足的错误。
  • java.lang.StackOverflowError:表示栈溢出错误。
  • java.lang.ThreadDeath:表示线程终止的错误。
  • OutOfMemoryError:表示虚拟机内存不足。
  • StackOverflowError:表示调用栈溢出,通常是因为递归调用太深。
  • NoClassDefFoundError:表示在运行时找不到类定义。
  • LinkageError:表示链接错误,如类定义不一致。
  • AssertionError:表示断言失败。

处理机制

  • 异常处理:在Java中,异常处理主要通过try-catch语句和throws声明来实现。程序员可以通过try-catch语句捕获并处理异常,或者通过throws声明将异常抛出给方法的调用者处理。
  • 错误处理:由于Error类表示的通常是严重的系统问题,因此一般不建议应用程序捕获或处理Error类的异常。这些异常通常应由系统级别的处理来解决。

总结

  • Exception:表示可以被程序捕获和处理的异常,通常由程序逻辑错误或外部条件引起。
  • Error:表示严重的系统错误,通常是不可恢复的,不应该在应用程序中捕获和处理。
  • Throwable:是所有异常和错误的基类,提供了通用的方法来处理异常和错误。

综上所述,在Java中,Exception和Error是两种不同的异常类型,它们分别用于表示程序可能可以处理的异常情况和程序运行过程中的严重问题。了解它们的包结构、分类以及处理机制对于编写健壮的Java程序至关重要。

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

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

相关文章

新书速览|循序渐进Spark大数据应用开发

《循序渐进Spark大数据应用开发》 本书内容 《循序渐进Spark大数据应用开发》结合作者一线开发实践,循序渐进地介绍了新版Apache Spark 3.x的开发技术。全书共10章,第1章和第2章主要介绍Spark的基本概念、安装,并演示如何编写最简单的Spark程…

一道算法期末应用题及解答

1.印刷电路板布线区划分成为n m 个方格,确定连接方格a 到方格b 的最短布线方案。 在布线时,只能沿直线或者直角布线,为避免交叉,已经布线的方格做了封锁标记,其他线路不允许穿过被封锁的方格,某…

2024内科学综合类科技核心期刊汇总

在已经公布的中国科技核心期刊目录(2024年版)中,5本内科学综合类期刊入选。常笑医学整理了这5本科技核心期刊的详细参数,以及投稿信息,供大家在论文投稿时参考,有需要的赶紧收藏! 1.《临床内科…

【网络】Socket编程TCP/UDP序列化和反序列化理解应用层(C++实现)Json::Value

主页:醋溜马桶圈-CSDN博客 专栏:计算机网络原理_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1.基于Socket的UDP和TCP编程介绍 1.1 基本TCP客户—服务器程序设计基本框架 ​编辑1.2 基本UDP客户—服务器程序设计基本框…

Spring MVC——针对实习面试

目录 Spring MVC什么是Spring MVC?简单介绍下你对Spring MVC的理解?Spring MVC的优点有哪些?Spring MVC的主要组件有哪些?Spring MVC的工作原理或流程是怎样的?Spring MVC常用注解有哪些? Spring MVC 什么是…

硬件工程师之电子元器件—二极管(10)之可变电容和TVS二极管

写在前面 本系列文章主要讲解二极管的相关知识,希望能帮助更多的同学认识和了解二极管。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 二极管 25. 齐纳二极管的动态阻抗 齐纳阻抗是齐纳二极管在传导电流时的等效串联电阻(E…

2024-11-19 树与二叉树

一、树的定义和基本语术 1.基本概念:从根节点出发,依次长出各个分支,各个分支也能长出下级分支。(根节点无前驱,叶无后继)除根节点外,任何一个结点有且仅有一个前驱。 2.树的基本概念&#xff…

【金融风控项目-08】:特征构造

文章目录 1.数据准备1.1 风控建模特征数据1.2 人行征信数据1.3 据之间的内在逻辑 2 样本设计和特征框架2.1 定义观察期样本2.2 数据EDA(Explore Data Analysis)2.3 梳理特征框架 3 特征构造3.1 静态信息和时间截面特征3.2 未来信息问题3.2.1 未来信息案例3.2.2 时间序列特征的未…

docker基础

一 docker整体架构 docker镜像(image) docker hub类似于maven远程仓库地址: https://hub.docker.com/ 该地址用于搜索并下载地址。 镜像下载命令: docker pull imagename 比如:docker pull to…

Qt 元对象系统

Qt 元对象系统 Qt 元对象系统1. 元对象的概念2. 元对象系统的核心组件2.1 QObject2.2 Q_OBJECT 宏2.3 Meta-Object Compiler (MOC) 3. 信号与槽3.1 基本概念信号与槽的本质信号和槽的关键特征 3.2 绑定信号与槽参数解析断开连接 3.3 标准信号与槽查找标准信号与槽使用示例规则与…

Lua如何连接MySQL数据库?

大家好,我是袁庭新。使用Lua语言如何来连接数据库呢?新哥这篇文章给你安排上。 1 LuaSQL概述 LuaSQL是一个轻量级的Lua到数据库管理系统(DBMS)的接口库,由Kepler Project维护,且是开源的。它提供了一个简…

高级指南:全面解析线上服务器CPU占用过高问题及其解决方案

文章目录 拿到CPU占用高的进程ID通过进程ID拿到CPU占用高的线程ID将线程ID转换为十六进制jstack分析线程栈信息 CPU占用过高的时候要先找出到底是哪个进程下的线程占用内存过高了。 我在线上预先写了一个Java程序,Test.java用于本篇文章实验所用。模拟CPU占用过高时…

单片机智能家居火灾环境安全检测-分享

目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 电路图采用Altium Designer进行设计: 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 传统的火灾报警系统大多依赖于简单的烟雾探测器或温度传感器,…

打造网页版Ubuntu环境:群晖NAS部署docker-webtop与远程访问指南

文章目录 前言1. 下载Docker-Webtop镜像2. 运行Docker-Webtop镜像3. 本地访问网页版Linux系统4. 群晖NAS安装Cpolar工具5. 配置异地访问Linux系统6. 异地远程访问Linux系统7. 固定异地访问的公网地址 前言 本文旨在详细介绍如何在群晖NAS部署docker-webtop,并结合c…

Python轴承故障诊断 (19)基于Transformer-BiLSTM的创新诊断模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

STM32设计学生宿舍监测控制系统-分享

目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 电路图采用Altium Designer进行设计: 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 本项目旨在利用STM32单片机为核心,结合传感器技术、无线通信技…

英伟达 Isaac Sim仿真平台体验

一、产品名称及版本 Isaac Sim 是由 NVIDIA 开发的一款基于物理模拟的机器人仿真平台,旨在为机器人开发者和研究人员提供一个高效、真实的仿真环境。Isaac Sim 基于 NVIDIA 的 Omniverse 平台,结合了强大的图形渲染、物理引擎和深度学习能力,…

利用寄存器方式,点亮led3最小板

作业:利用寄存器方式,点亮led3小灯 1.通过观察原理图, led3, 是PA8, 一段接3.3v, 一端接io口, 所以PA8端口输出低电平, 就可以让小灯点亮了 2.利用keil创建最小工程 点击跳转博客 3.按照库函数的配置方式 #include "stdint.h" #include "stm32f10x.h" …

Helius:从数据出发,衡量 Solana 的真实去中心化程度

撰文:Lostin,Helius 编译:Yangz,Techub News 摘要 截至 Epoch 685,Solana 有 4514 个节点,包括 1414 个验证者和 3100 个 RPC。没有哪个验证者控制的质押份额超过 3.2%。 中本聪系数(NC&#…

SpringBoot 增量部署发布(第2版)

一、背景介绍 书接上一篇《SpringBoot 增量部署发布_springboot增量部署-CSDN博客》,上一篇内容实现了将静态资源与jar分离,但是即使是打包成**-exec.jar,解压jar文件,可以看到里面包含了static,resource目录&#xf…