Java 异常
文章目录
- 1. 异常概述
- 2. JVM 的默认处理方案
- 3. 异常处理之 try...catch
- 4. Throwable 的成员方法
- 5. 编译异常和运行异常的区别
- 6. 异常处理之 throws
- 7. 自定义异常
- 8. throws 和 throw 的区别
1. 异常概述
异常就是程序出现了不正常的情况。

① Error:严重问题,不需要处理;
② Exception:称为异常类,它表示程序本身就可以处理的问题;
③ RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码;
④ 非 RuntimeException:编译期就必须处理的,否则程序不能通过编译,就更不能正常运行了。
2. JVM 的默认处理方案
如果程序出现了问题,我们没有做任何处理,最终 JVM 会做默认的处理。
(1)把异常名称、异常原因以及异常出现的位置等信息输出在了控制台;
(2)程序从此处就停止执行。
3. 异常处理之 try…catch
如果程序出现了问题,我们需要自己来处理,有两种方案:
① try…catch…
② throws
//格式
try {//可能出现异常的代码
} catch (异常类名 变量名) {//异常的处理代码
}
执行流程:
(1)程序从 try 里面的代码开始执行;
(2)出现异常,会自动生成一个异常类对象,该异常对象将被提交给 Java 运行时系统;
(3)当 Java 运行时系统接收到异常对象时,会到 catch 中去找匹配的异常类,找到后进行异常的处理;
(4)执行完毕后,程序还可以继续往下执行。
try {int[] arr = {1, 2, 3};System.out.println(arr[3]);
} catch (ArrayIndexOutOfBoundsException e) {System.out.println("你访问的数组索引不存在!");
}
4. Throwable 的成员方法
Throwable 是所有异常的祖宗类。
Throwable 的成员方法如下:

try {int[] arr = {1, 2, 3};System.out.println(arr[3]);} catch (ArrayIndexOutOfBoundsException e) {System.out.println(e.toString());}

e.printStackTrace() 方法的输出信息是最全的,所以也是我们经常使用的!
5. 编译异常和运行异常的区别
Java 中的异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常,所有的 RuntimeException 类及其子类被称为运行时异常,其他的异常都是编译时异常。
编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译;
运行时异常:无需显示处理,也可以和编译时异常一样处理。
6. 异常处理之 throws
虽然我们通过 try…catch…可以对异常进行处理,但是并不是所有的情况我们都有权限进行异常的处理。也就是说,有些时候可能出现的异常是我们处理不了的,这个时候该怎么办呢?
针对这种情况,Java 提供了 throws 的处理方案。
throws 异常类名;
注意这个格式是跟在方法的括号后面的!
public static void show() throws ArrayIndexOutOfBoundsException {int[] arr = {1, 2, 3};System.out.println(arr[3]);
}
① 编译时异常必须要进行处理,使用 try…catch… 或 throws,如果采用 throws 这种方案,它仅仅是抛出异常,并没有做实际的操作,将来谁调用谁就得单独去处理;
② 运行时异常可以不处理,出现问题后,需要我们回来修改代码。
7. 自定义异常
//格式
public class ScoreException extends Exception {public ScoreException() {}public ScoreException(String message) {super(message);}
}
//ScoreException.javapackage com.an;public class ScoreException extends Exception {public ScoreException() {}public ScoreException(String message) {super(message);}
}
//Teacher.javapackage com.an;public class Teacher {public void checkScore(int score) throws ScoreException {if (score < 0 || score > 100) {throw new ScoreException("你给的分数有误,分数应该在0~100之间!");} else {System.out.println("分数正常!");}}
}
//Test.java//Test.javapackage com.an;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入分数:");int score = sc.nextInt();Teacher t = new Teacher();try {t.checkScore(score);} catch (ScoreException e) {e.printStackTrace();}}
}


8. throws 和 throw 的区别
throws:
① 用在方法声明后面,跟的是异常类名;
② 表示抛出异常,由该方法的调用者来处理;
③ 表示出现异常的一种可能性,并不一定会发生这些异常。
throw:
① 用在方法体内,跟的是异常对象名;
② 表示抛出异常,由方法体内的语句处理。
相关文章:
Java 异常
文章目录1. 异常概述2. JVM 的默认处理方案3. 异常处理之 try...catch4. Throwable 的成员方法5. 编译异常和运行异常的区别6. 异常处理之 throws7. 自定义异常8. throws 和 throw 的区别1. 异常概述 异常就是程序出现了不正常的情况。 ① Error:严重问题ÿ…...
JavaSE学习笔记day17
零、 复习昨日 File: 通过路径代表一个文件或目录 方法: 创建型,查找类,判断类,其他 IO 输入& 输出字节&字符 try-catch代码 一、作业 给定路径删除该文件夹 public static void main(String[] args) {deleteDir(new File("E:\\A"));}// 删除文件夹public s…...
【项目】Vue3+TS 动态路由 面包屑 查询重置 列表
💭💭 ✨:【项目】Vue3TS 动态路由 面包屑 查询重置 列表 💟:东非不开森的主页 💜: 热烈的不是青春,而是我们💜💜 🌸: 如有错误或不足之处࿰…...
前脚背完这些接口自动化测试面试题,后脚就进了字节测试岗
1、请结合你熟悉的项目,介绍一下你是怎么做测试的? -首先要自己熟悉项目,熟悉项目的需求、项目组织架构、项目研发接口等 -功能 接口 自动化 性能 是怎么处理的? -第一步: 进行需求分析,需求评审&#…...
termux 安装centos
相关链接 centos官网rootfs制作其他人提供的安装脚本centos镜像列表其他人提供的安装脚本的说明 如果想使用老版本的centos7跟着上面链接5走就行 如果想用新系统比如centos9 stream,就跟我来 Q:为什么要装新系统? A:旧系统太多软件已过时,升级费时费…...
从菜鸟程序员到高级架构师,竟然是因为这个字final
final实现原理 简介 final关键字,实际的含义就一句话,不可改变。什么是不可改变?就是初始化完成之后就不能再做任何的修改,修饰成员变量的时候,成员变量变成一个常数;修饰方法的时候,方法不允…...
【vulhub漏洞复现】CVE-2018-2894 Weblogic任意文件上传漏洞
一、漏洞详情影响版本weblogic 10.3.6.0、weblogic 12.1.3.0、weblogic 12.2.1.2、weblogic 12.2.1.3WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应…...
函数栈帧详解
写在前面 这个模块临近C语言的边界,学起来需要一定的时间,不过当我们知道这些知识后,在C语言函数这块我们看到的不仅仅是表象了,可以真正了解函数是怎么调用的。不过我的能力有限,下面的的知识若是不当,还…...
Spring 事务(编程式事务、声明式事务@Transactional、事务隔离级别、事务传播机制)
文章目录1. 事务的定义2. Spring 中事务的实现2.1 MySQL 中使用事务2.2 Spring 中编程式事务的实现2.3 Spring 中声明式事务2.3.1 声明式事务的实现 Transactional2.3.2 Transactional 作用域2.3.3Transactional 参数设置2.3.4 Transactional 异常情况2.3.5 Transactional 工作…...
车载技术——Window Display之surface的绘制过程与原理
一、Surface 概述 OpenGL ES/Skia定义了一组绘制接口的规范,为什么能够跨平台? 本质上需要与对应平台上的本地窗口建立连接。也就是说OpenGL ES负责输入了绘制的命令,但是需要一个 “画布” 来承载输出结果,最终展示到屏幕。这个…...
2023年全国最新工会考试精选真题及答案10
百分百题库提供工会考试试题、工会考试预测题、工会考试真题、工会证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 51.()是企业工会的权力机关,每年召开一至两次会议。 A.会员大会 B.会…...
pytorch-复现经典深度学习模型-LeNet5
Neural Networks 使用torch.nn包来构建神经网络。nn包依赖autograd包来定义模型并求导。 一个nn.Module包含各个层和一个forward(input)方法,该方法返回output。 一个简单的前馈神经网络,它接受一个输入,然后一层接着一层地传递,…...
【C++】类和对象(上)
文章目录对象的介绍类的介绍类的两种定义方式类的访问限定符及封装访问限定符封装类的作用域类的实例化类的对象模型对象的介绍 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题; C是基于面向…...
工作中责任链模式用法及其使用场景?
前言 笔者是金融保险行业,有这么一种场景,业务员录完单后提交核保,这时候系统会对保单数据进行校验,如不允许手续费超限校验,客户真实性校验、费率限额校验等等,当校验一多时,维护起来特别麻烦…...
三八女神节有哪些数码好物?2023年三八女神节数码好物清单
2023年的三八女神节就快到了,大家还在烦恼,不知道有哪些数码好物?在此,我来给大家分享几款三八女神节实用性强的数码好物,一起来看看吧。 一、蓝牙耳机:南卡小音舱 参考价:239 推荐理由&…...
FairGuard-Windows加固工具版本更新日志
FairGuard-Windows加固工具1.2.2版本更新日志: ■ 增加Unity Resources资源加密的支持; ■ 增加单独Assetbundle资源加密,并同时支持压缩包和文件夹作为输入的方式; ■ 增加对游戏原文件夹加固的支持; Windows加固方案介绍 FairGuard专为游戏量身定…...
基于RT-Thread完整版搭建的极简Bootloader
项目背景Agile Upgrade: 用于快速构建 bootloader 的中间件。example 文件夹提供 PC 上的示例特性适配 RT-Thread 官方固件打包工具 (图形化工具及命令行工具)使用纯 C 开发,不涉及任何硬件接口,可在任何形式的硬件上直接使用加密、压缩支持如下…...
3.flinkDateStreamAPI介绍env与source
执行环境 Flink可以在不同的环境上下文中运行.可以本地集成开发环境中运行也可以提交到远程集群环境运行. 不同的运行环境对应的flink的运行过程不同,需要首先获取flink的运行环境,才能将具体的job调度到不同的TaskManager 在flink中可以通过StreamExecutionEnvironment类获取…...
$ 2 :数据类型
1.数据类型 1.1基本类型 a、整型int b、浮点型float c、字符型char 1.2构造类型 a、数组[ ] b、结构体struct 1.3指针类型 * 1.4空类型(void) 2.关键字 autoconstdoublefloatintshortstructunsignedbreakcontinueelseforlongsignedswitchvoidcasedefaultenumgotoregistersiz…...
类和对象 - 上
本文已收录至《C语言》专栏! 作者:ARMCSKGT 目录 前言 正文 面向过程与面向对象 面向过程的解决方法 面向对象的解决方法 面向对象的优势 类的引入 早期C类的实现 class定义类 class定义规则 类成员的两种定义方式 类的访问限定符及封装 访…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
NineData数据库DevOps功能全面支持百度智能云向量数据库 VectorDB,助力企业 AI 应用高效落地
NineData 的数据库 DevOps 解决方案已完成对百度智能云向量数据库 VectorDB 的全链路适配,成为国内首批提供 VectorDB 原生操作能力的服务商。此次合作聚焦 AI 开发核心场景,通过标准化 SQL 工作台与细粒度权限管控两大能力,助力企业安全高效…...
