发布时间:2026/8/26 19:25:47
Java中的异常总结详解(异常类型、声明异常、抛出异常、捕获异常) 前言异常处理使得程序可以处理非预期的情景并且继续正常的处理。程序运行进程里, 一旦JVM检测出一项难以执行的操作, 便会现运行时错误error。举例来说, 要是运用一个超界的下标去访问数组, 程序就会产生一回运行时错误。倘若程序需求输入一个值, 就会获取一个on的运行时错误。于Java里, 运行时错误会当作异常给抛出, 异常乃是一种对象, 指代着阻挠程序正常执行的错误抑或情况, 要是异常未被处理, 那程序将会非正常终止, 该如何去处理这个异常, 从而让程序能够继续运行或者优雅终止呢 , 本篇文章会去介绍此主题。一、异常概述异常是什么呢, 它是程序在运行期间出现的一些错误, 我们借助面向对象的思想, 把这些错误用类去进行描述, 一旦产生一个错误, 也就是创建了某一个错误对应的对象, 这个对象就是我们所称作的异常对象。在这之前也见过很多的异常错误例如1ption2空指针异常 对null调用其成员。3数学运算异常 非法的数学运算。4类型转换异常 将类进行错误的强制转换。5n数字格式化异常 将数字字符串进行解析。6on输入不匹配异常 在输入时输入非法数据。7时间解析异常 非法的时间格式。8栈内存溢出异常 函数递归。9堆内存异常 数组空间开辟过大 程序中对象太多。为了演示异常处理在这里举了个例子进行讲解public static void main(String[] args) { int[] arr {1,2,3,4,5}; int num getNumber(arr,10); System.out.println(num); } private static int getNumber(int[] arr, int i) { return arr[i]; //如果arr为null NullPointerException //如果i越界 ArrayIndexOutOfBoundsException }像上面所展示的代码那样, 针对一个存在返回值的函数来讲, 倘若操作计算是正确这种情况, 必然会有一个正常情形下的返回值, 如果操作计算属于错误的状况, 从函数这个角度去看, 会不会有正常的返回值呢? 不会 这样的结论, 不会有的这种情况是存在的?事实上, 绝大多数的过失, 实际上都是被JVM发觉随后进行抛出的, 当然啦, 我们也能够人为去加以判定的。private static int getNumber(int[] arr, int i) { //return arr[i];//是由JVM来进行判断的 //模拟JVM的操作 用手动的判断模拟JVM自动的发现 if (arr null) { //产生一个空指针异常的问题对象 //用throw抛出关键 将产生的问题告知调用者 throw new NullPointerException(); //一旦上述抛出一个问题 此函数立马中断 //类似于return 正常结束(弹栈) //throw非正常结束(中断 强制弹栈 并抛出问题给调用者) } if (i 0 || i arr.length) { //产生一个数组角标越界异常的问题对象 throw new ArrayIndexOutOfBoundsException(); //throw new StackOverflowError(); //PS 一旦出现错误 抛出问题即可 但是最好抛出最相关最精确的问题 } return arr[i]; }函数一旦出现问题, 会直接把问题抛给主函数, 然而主函数并未处理该问题, 主函数随后将问题抛给调用者 JVM, JVM 可不帮你解决, 结果便是程序中断了JVM, 它调用main, main又进行调用, 之后出现异常, 异常被抛出给main, main却没有处理, 于是异常被抛出并传递给JVM, 最后JVM直接中断。补充说明一点, 当然了, 要是函数的内部出现了问题, 那么也能够把这个问题在内部进行处理, 在处理之后, 就不需要朝着上层去抛出了。二、异常类型由于错误的因素涵盖诸多, 刻画错误的类别同样不少, 如此一来便形成了一个庞大的家族或者体系, 其中填充的全是异常错误类, 我们将其称作异常体系。就异常体系来讲, 众人皆为错误, 然而所形成的缘由不完全相同, 持续朝向上方提取共通性。最终提炼出此接口能够被抛出来的, 但凡属于异常对象, 不管成因如何, 均能够被抛出。Java语言里, 类身为所有错误以及异常的超类, 唯有在对象属于这个类抑或是它的子类当中的某一个的实例之际, 才能够借助Java虚拟机或者Java throw语句将其抛出。异常属于对象范畴之内, 对象全部是仰仗类所勾勒而成, 在此情境里涉及的根类是java.lang., 关系图展示如下:注意, 类名 Error, 以及, 有时候, 容易引发混淆。这三种类别, 均为异常, 此处所讨论的错误, 皆于运行这个时段出现。类作为所有异常类的根源所在。所有Java异常类, 都存在直接或间接继承自其的情况。能够借助继承它或者其特定子类的方式, 来创建属于自己的异常类。三种主要类型包括, 这些异常类可被划分成, 系统错误, 编译时异常, 运行时异常。1.系统错误Error内存耗尽 无法加载某个Class 栈溢出。2.编译时异常则是编译时异常它可以被捕获并处理。某些异常是应用程序逻辑处理的一部分应该捕获并处理。例如另外存在一些异常情况系程序逻辑编写出现差错所导致的, 对此应当对程序自身予以修复, 举例来说:3.运行时异常、Error就连同它们的子类一块儿被称之为免检异 )。余下的各个异常编译时异常统统被叫做必检异常, 其意思是说编译器会硬性要求程序员检査并且借助try - catch块去处理它们, 又或者是在方法头予以声明。很多时候, 免检异常往往都能体现出程序设计里那种没办法恢复的逻辑错误, 就比如说, 要是借助一个引用变量去访问一个对象, 可在这之前却没给这个对象赋值, 那就会抛出异常, 要是去访问一个数组超出界限的元素, 也会抛出ption异常, 这些那可都是程序当中必须得去纠正的逻辑错误, 免检异常说不定会在程序的任何一处冒出来, 为了防止老是去用try - catch块, Java语言并没有强制规定编写代码的时候要去捕获或者声明免检异常。Java规定三、处理编译时异常的更多知识 1. 声明异常在Java里, 当下正在执行的语句肯定是归属于某一个方法的。Java解释器会去调用main方法从而起始执行一项程序。每一个方法都必然要声明其有可能抛出的必检异常的类型。这就被称作声明异常。仅仅是针对编译时异常进行声明, 以此告知方法的调用者有异常。如果要于方法里头表明一个异常, 那就得在方法的开头部分运用关键字, 情况如下所示:public void myMethodO throws IOException当关键字表明, 方法可齙会抛出异常时。若方法本身可能会抛出多个相异的异常, 那么就能够在该关键字之后紧接着补上一个以逗号作为间隔来区分的异常列表:public void myMethodO throws Exceptionl, Exception2,… ExceptionN注意, 要是方法于父类之中未声明异常, 那么在子类里就不可以通过继承它来声明异常。2. 抛出异常程序检测到错误时, 能够创建一个符合合适异常类型的实例, 接着将其抛出, 此行为称作抛出一个异常an。这里有个例子, 倘若程序察觉到传递给方法的参数和方法的合约不相符比如, 方法里的参数应当是非负的, 然而传入的却是一个负参数, 那么这个程序便能够创建tion的一个实例, 随后将其抛出, 情况如下所示:IllegalArgumentException ex new II1egalArgumentException(Wrong Argument); throw ex;或者大多数使用下面的语句throw new IllegalArgumentException(Wrong Argument);注意, tion属于Java API里的一个异常类, 一般而言, 其中的每个异常类起码具备两个构造方法, 一个没有参数的构造方法, 以及一个带有能够描述这个异常的参数的构造方法, 该参数称作异常消息, 它能够通过()获取。提示, 声明异常的关楗字是, 抛出异常的关键字是throw。3. 捕获异常

相关新闻

2026/8/26 19:25:47

小米AI编程助手发布并开源:界面全汉化,自进化终端AI编程助手

小爱同学发布了自主研发的AI编程助手, 它的界面是全中文的, 并且能够自我进化。小米通过二次开发, 正式发布MiMo Code V0.1.0并开源, 该版本采用宽松的MIT协议, 任何个人、企业都可以下载部署, 自由使用、修改和二次分发, 降低了开发工具链的集成门槛。对于模型适配这一方面, M…

2026/8/26 19:25:47

基于SpringBoot2+vue2的靓车汽车销售网站

1. 资源https://blog.xiaobias.com/article/582. 项目简介 靓车汽车销售网站是B2C(Business-to-Customer,商对客)电子商务平台。系统基于Spring Boot框架构建,分为后台管理子系统和前端用户子系统。 后台管理子系统:为…

2026/8/26 19:25:47

基于SpringBoot2+vue2的中小企业设备管理系统

1. 资源https://blog.xiaobias.com/article/572. 项目简介 中小企业设备管理系统,基于 Spring Boot MyBatis-Plus Vue.js 开发。系统旨在帮助中小企业对设备及配件进行全生命周期管理,包括设备信息登记、购买、点检、润滑、改造、报修、安装、售后保养…

2026/8/26 20:25:57

【亲测免费】 AIDungeon 开源项目安装与使用教程

AIDungeon 开源项目安装与使用教程 本指南将引导您了解并使用 AIDungeon 开源项目,它是一个基于人工智能生成文字冒险游戏的平台。我们将逐步解析其核心组件,包括目录结构、启动文件以及配置文件,帮助您快速上手。 1. 项目目录结构及介绍 …

2026/8/26 20:25:57

《妃梦千年》第14章-淑妃的佛堂

第14章 淑妃的佛堂 半枚车钥匙摊在桌上,三个人都没说话。 最后是苏珊先开口的,她看了李明一眼:“行了,谁欠谁的,回去再说。能活着,就是运气。” 李明低声说:“对不起。” 林清婉把钥匙收起来&am…

2026/8/26 20:25:56

LabVIEW中实现DXF文件到XYZ坐标数组的转换

阅读时间:约6分钟适用人群:需要使用LabVIEW读取CAD图纸并生成运动控制坐标数据的工程师,涉及电机运动、轨迹规划或数控加工等场景,尤其适合希望摆脱对Motion Assistant等商用工具的依赖、自行构建DXF解析流程的开发者。一、背景与…

2026/8/26 9:13:28

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 11:48:27

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 16:56:43

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 0:04:32

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 1:19:35

JSON总结

JSON概念 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,主要用于跟服务器进行交换数据。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C、C#、Java、JavaScr…

2026/8/26 1:19:35

保存连接sse 是什么原理,为什么不会一直请求

“保持连接”用的是 SSE(Server-Sent Events),本质是一个没有马上结束的 HTTP 请求。 过程是: 拷贝机发送一次请求: GET /api/code-sync/events服务器返回: Content-Type: text/event-stream但不关闭响应&…

2026/8/26 19:34:06

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/26 19:17:08

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/26 19:34:05

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…