每日一道Java面试题:说一说Java中的异常

写在开头

任何一个程序都无法保证100%的正常运行,程序发生故障的场景,我们称之为:异常,在Java中对于异常的处理有一套完善的体系,今天我们就来一起学习一下。老样子,用一段简单的代码开始今天的学习。

我:“小二,上代码!”

JavaBuild君:“好嘞!几位爷,里面请~”

【代码示例1】

//Java中经典的算术异常!
public class Test {public static void main(String[] args){System.out.println(1/0);}
}

编译通过,但运行时提示ArithmeticException(算术异常),这是典型的Java异常场景。

异常的分类

看完上面的内容,想必大家对于Java中的异常已经有了一个基本的了解了,其实,在Java中异常的分类有很多种,我们通过一个思维导图,快速了解。

在Java中有个Throwable类,为所有异常的祖先类,其下又分为两个子类,分别为Exception(异常)和Error(错误)。

Exception和Error的区别

  • Exception:程序本身可以处理的异常,可以通过catch或throw、throws进行捕获处理或抛出。

  • Error:程序无法自处理的错误!虚拟机错误、内存溢出、IO错误等。

受检查异常与非受检查异常

在Exception类下又分为两个子类:Checked Exception (受检查异常) 和 Unchecked Exception (不受检查异常)。

  • CheckedException:受检查异常,范围在编译期,此时若发生异常,无法通过编译,代码爆红。

受检查异常范围:IO 相关的异常、ClassNotFoundException、SQLException等,或者说除了运行时异常(RuntimeException)及其子类外,其他的异常几乎都是受检查异常。

  • UncheckedException:非受检查异常,顾名思义,即便存在该类型异常,代码也可通过编译,比如代码示例1中的算术异常,只是会在运行时报错,那它的涉及范围就好猜了,没错!就是RuntimeException及其子类!

RuntimeException

运行时异常有下面包含了很多子类,常用的有

1、NullPointerException(空指针异常)
2、IllegalArgumentException(非法参数异常)
3、NumberFormatException(字符串转换为数字格式异常,IllegalArgumentException的子类)
4、ArrayIndexOutOfBoundsException(数组越界异常)
5、ClassCastException(类型转换异常)
6、ArithmeticException(算术异常)
7、SecurityException (安全错误比如权限不够)
8、UnsupportedOperationException(不支持的操作异常,比如重复创建同一用户)
...

处理异常的2种方式

其实在上文中也已经提到了处理异常的2种方式,通过catch进行捕获,错误信息打印到控制台,或者打印到配置好的日志系统中;或者通过throws一层层的向上抛,直到调用者处理这个异常。

【代码示例2】

public class Test {public static void main(String[] args) throws FileNotFoundException {String name = "JavaBuild";File file = new File(name);//方式一,throws抛出FileInputStream fileInputStream1 = new FileInputStream(file);//方式二,catch捕获,打印至控制台try {FileInputStream fileInputStream2 = new FileInputStream(file);} catch (FileNotFoundException e) {e.printStackTrace();}}
}

文章转载自:JavaBuild

原文链接:https://www.cnblogs.com/JavaBuild/p/18002488

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

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

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

相关文章

【CanvasKeyFrames - HTML5 Canvas 图片序列帧播放工具】

前言 一、CanvasKeyFrames 是什么&#xff1f; 用来做canvas动画的工具。 二、使用步骤 效果如图&#xff1a;上下波动的线条 1.引入库 代码如下&#xff08;示例&#xff09;&#xff1a; 在html中引入&#xff1a; <script src"canvas-keyframes.js"><…

源聚达科技:开一家抖音小店有没有风险

在数字化浪潮的推动下&#xff0c;抖音小店如雨后春笋般涌现&#xff0c;成为众多创业者眼中的香饽饽。然而&#xff0c;“盛名之下&#xff0c;其实难副”&#xff0c;开设一家抖音小店并非只有风光无限&#xff0c;其背后的风险也不容小觑。 首要的风险源自激烈的市场竞争。抖…

力扣之2629.复合函数(reduceRight )

/*** param {Function[]} functions* return {Function}*/ var compose function(functions) {return function(x) {return functions.reduceRight((result, func) > func(result), x);} };/*** const fn compose([x > x 1, x > 2 * x])* fn(4) // 9*/ 说明&#x…

大模型ReAct智能体开发实战

哆啦A梦是很多人都熟悉的角色&#xff0c;包括我自己。 在成长过程中&#xff0c;我常常对他口袋里的许多小玩意感到惊讶&#xff0c;而且他知道何时使用它们。 随着大型语言模型 (LLM) 的发展趋势&#xff0c;你也可以构建一个具有相同行为方式的模型&#xff01; 我们将构建…

DHCP简介

定义 动态主机配置协议DHCP&#xff08;Dynamic Host Configuration Protocol&#xff09;是一种用于集中对用户IP地址进行动态管理和配置的技术。即使规模较小的网络&#xff0c;通过DHCP也可以使后续增加网络设备变得简单快捷。 DHCP是在BOOTP&#xff08;BOOTstrap Protoc…

linux 04 进程管理

02.进程管理 ps 在命令行输入ps后按回车键就能查看当前系统中正在运行的进程。 第一. 查看进程ps 进程的状态STAT 进程的周期 fork&#xff0c;产生一个新进程 第二.排序进程表 ps aux --sort -%cpu 降序cpu %cpu 增序cpu 第三.父子关系 ps ef 第四.自定义 五.动态查看…

【Java 数据结构】排序

排序算法 1. 排序的概念及引用1.1 排序的概念1.2 常见的排序算法 2. 常见排序算法的实现2.1 插入排序2.1.1 直接插入排序2.1.2 希尔排序( 缩小增量排序 ) 2.2 选择排序2.2.1 直接选择排序2.2.2 堆排序 2.3 交换排序2.3.1冒泡排序2.3.2 快速排序2.3.3 快速排序非递归 2.4 归并排…

Pinterest是什么软件?有什么功能?Pinterest怎么做营销?

如今&#xff0c;社媒营销已成为连接品牌与全球消费者的关键桥梁。随着像Instagram、Twitter等海外社交媒体平台的兴起&#xff0c;社媒营销人员和跨境电商面临着无限的机遇。而在这些平台中&#xff0c;有一个平台以其独特的视觉展示方式和高度专注的用户体验脱颖而出——那就…

力扣hot100 无重复字符的最长子串 双指针 滑动窗口 哈希

Problem: 3. 无重复字符的最长子串 文章目录 思路Code 思路 &#x1f468;‍&#x1f3eb; 参考 Code ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( 1 ) O(1) O(1) class Solution {public int lengthOfLongestSubstring(String s){if (s null ||…

HTML+CSS+JS的3D进度条

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTMLCSSJS的3D进度条</title><style>…

Sqoop数据迁移工具

概述 Apache Sqoop&#xff08;SQL-to-Hadoop&#xff09;项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在 Sqoop 的帮助下&#xff0c;轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中&#xff1b;同时也可以把数据从 Hadoop 系统…

Android应用程序上线到Google Play商店

将Android应用程序上线到Google Play商店涉及多个步骤。以下一般的上线流程&#xff0c;具体的步骤可能会根据开发者的需求和Google Play的更新而有所变化。确保遵循Google Play的规定和最佳实践&#xff0c;以确保应用能够成功上线并为用户提供良好的体验。北京木奇移动技术有…

78SXX系列­——用于各种电视机、收录机、电子仪器、设备的稳压电源电路,输出电流大,内设过热、短路保护电路,无需外接元件

78SXX系列是用于各种电视机、收录机、电子仪器、设备的稳压电源电路。包括78S05、78S06、 78S08、 78S09、 78S10、 78S12、 78S15. 主要特点&#xff1a; ● 极限输出电流:0.2A ● 固定输出电压: 5V、 6V、 8V、9V、10V、 12V、 15V ● 内置短路保护电路 ● 内置热保护电路 ●…

react 之 Class API

class API就是编写类组件&#xff0c;虽然react官方不在推荐使用&#xff0c;但是一般公司里维护的老项目里还是有的&#xff0c;可以简单了解下 1.类组件的基础结构 类组件就是通过js里的类来组织组件的代码的 1️⃣通过类属性state定义状态数据 2️⃣通过setState方法来修…

Docker Container(容器)

什么是容器 通俗地讲&#xff0c;容器是镜像的运行实体。镜像是静态的只读文件&#xff0c;而容器带有运行时需要的可写文件层&#xff0c;并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态。通俗地讲&#xff0c;容器…

使用Pycharm在本地调用chatgpt的接口

目录 1.安装环境 2.建立多轮对话的完整代码&#xff08;根据自己使用的不同代理需要修改端口&#xff08;port&#xff09;&#xff09; 3.修改代码在自己的Pycharm上访问chagpt的api并实现多轮对话&#xff0c;如果不修改是无法成功运行的。需要确定秘钥和端口以保证正常访…

注册虾皮买家号所需资料解析:一步步了解必备信息

为了在Shopee上获取更多的曝光和销售机会&#xff0c;许多卖家都在积极探索自动化注册的方法。使用Shopee买家通系统进行自动化注册&#xff0c;需要准备一些必要的资料&#xff0c;下面我们来详细了解一下&#xff1a; 手机号&#xff1a;在Shopee注册买家号时&#xff0c;手…

2024美赛C题保姆级分析完整思路代码数据教学

2024美国大学生数学建模竞赛C题保姆级分析完整思路代码数据教学 C题 Momentum in Tennis 网球中的动量 在2023年温布尔登男单决赛中&#xff0c;20岁的西班牙新星卡洛斯阿尔卡拉兹击败了36岁的诺瓦克德约科维奇。这是德约科维奇自2013年以来在温布尔登的首次失利&#xff0c;也…

linux+rv1126/imx6ull:opencv静态库交叉编译

目录 1.下载 2.准备工作 2.1安装依赖环境 2.2安装Cmake 2.3 解压opencv 3.Cmake设置 3.1文件夹选择 1&#xff09;进入源码根目录 2&#xff09;运行cmake 3&#xff09;选择目录 4&#xff09;进入配置界面 5&#xff09;查找编译器 6&#xff09;配置编译器 3.…

TCP 连接掉线自动重连

文章目录 TCP 连接掉线自动重连定义使用连接效果 TCP 接收数据时防止掉线。TCP 连接掉线自动重连。多线程环境下TCP掉线自动重连。 欢迎讨论更好的方法&#xff01; TCP 连接掉线自动重连 定义 定义一个类&#xff0c;以编写TCP连接函数Connect()&#xff0c;并且&#xff1a…