【JavaSE】throws 异常处理

article/2025/10/3 22:25:36

文章目录

  • 1. 基本介绍
  • 2. 快速入门案例
  • 3. 注意事项和使用细节

1. 基本介绍

  1. 如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。
  2. 在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类。

2. 快速入门案例

在这里插入图片描述

解读:
1. 这里的异常是一个 FileNotFoundException,编译异常
2. 使用 try-catch-finally
3. 使用 throws ,抛出异常,让调用 f2 方法的调用者(方法)处理
4. throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类。
5. throws 关键字后也可以是 异常列表,即可以抛出多个异常
public class Throws {public static void main(String[] args) {}public void f2() throws FileNotFoundException {FileInputStream fis = new FileInputStream("d://aa.txt");}
}

3. 注意事项和使用细节

  1. 对于编译异常,程序中必须处理,比如try-catch 或者 throws

  2. 对于运行时异常,程序中如果没有处理。默认就是throws的方式处理
    在这里插入图片描述
    在这里插入图片描述

  3. 子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类
    在这里插入图片描述

  • 从图中可以看出 ,NullPointerExceptionRuntimeException 的子类
class Father { //父类public void method() throws RuntimeException {}
}class Son extends Father {//子类@Overridepublic void method() throws NullPointerException{}
}
  1. throws过程中,如果有方法 try-catch,就相当于处理异常,就可以不必 throws处理。
  1. 编译异常是程序员必须要处理的。而运行异常报错有默认处理机制,并不要求程序员显示处理运行异常。
  • 可以看到如下 f1() 调用 f3() 报错,是因为 FileNotFoundException 是编译异常,当 f1() 调用时f3(),必须处理f3()的编译异常,在 f3()try-catch-finally ,或者继续 throws 这个编译异常。
    在这里插入图片描述
  • 解决如下:
	public static void f1() throws FileNotFoundException {//这里大家思考问题 调用f3() 报错//解读://1. 因为f3() 方法抛出的是一个编译异常//2. 即这时,就要f1() 必须处理这个编译异常//3. 在f1() 中,要么 try-catch-finally ,或者继续 throws 这个编译异常f3(); // 抛出异常}public static void f3() throws FileNotFoundException {FileInputStream fis = new FileInputStream("d://aa.txt");}
  • 所以,如下可以看到 在f4()中调用方法f5() 是没问题的,原因是f5()抛出的是运行异常
	public static void f4() {//解读://1. 在f4()中调用方法f5() 是 OK 的//2. 原因是f5() 抛出的是运行异常//3. 而java中,并不要求程序员显示处理运行异常,因为有默认处理机制f5();}public static void f5() throws ArithmeticException {}

默认处理的运行异常
在这里插入图片描述


http://chatgpt.dhexx.cn/article/CbUVdnHB.shtml

相关文章

throws异常

在程序开发过程中,程序员会尽量避免错误的发生,但是总会发生一些不可预测的事情,例如除法运算时除数为0 、内存不足、栈溢出等,这些就是异常,java语言提供了异常的处理机制,处理一些不可预期的事情。 使用t…

Elasticsearch之利用bulk提高写入性能(含源码分析)

什么是bulk操作 bulk是批量的意思,也就是把原来单个的操作打包好,通过批量的api提交到ES集群。下面是个示例: 单个操作: PUT my-index-000001/_doc/1 {"timestamp": "2099-11-15T13:12:00","message&…

.NET5必备工具——EF大数据批量处理----Bulk系列

之前做项目的时候,如果在大批量操作数据时,性能不好.因为在框架中使用了EntityFramework,于是就搜索到某著名插件,Z系列。 1.安装 然后在类里面添加引用之后,使用DbContext就可以直接点出来。 2.博客园有人做过对比试验 我们直接拿数据说话吧. EF传统…

初识ElasticSearch(5) -批量操作之bulk | 条件查询 | 其它查询

1. bulk:1.1. bulk语法:1.2. bulk行为-增删改: 2. bulk-index批量插入:3. bulk-update批量修改:4. bulk-delete批量删除:5. _update_by_query条件更新:6. _delete_by_query条件删除:…

mysql bulkupdate_Bulk Upsert for MySQL PostgreSQL

什么是 Upsert "UPSERT" is a DBMS feature that allows a DML statements author to atomically either insert a row, or on the basis of the row already existing, UPDATE that existing row instead, while safely giving little to no further thought to con…

JPA 2.1: Bulk Update and Delete

为什么80%的码农都做不了架构师?>>> JPA 2.1: Bulk Update and Delete In the JPA 2.0 and early version, if you want to execute a bulk updating query, you have to use update or delete clause in JPQL directly. JPA 2.1 introduce new Criteri…

ElasticSearch提供的bulk update性能对比

目的:为了对比update的数据中重复数据对性能的影响。

Java面试智力题逻辑题汇总2021

rand5()能够生成0-4的随机数 rand7()能够生成0-6的随机数 已知rand7()生成rand5() 已知rand5()生成rand7()

面试智力题精选:扑克牌问题

袁方同学在玩扑克牌。这幅扑克牌比较特别,没有花色,只有点数。每张牌的点数是1,2,3,...,20。一共20张牌。袁方把牌洗了很多遍以后,把所有牌正面朝下垒成一堆放在自己手上。他翻第一张牌,发现是1…

大厂面试常见智力题

1. 64匹马,8个赛道,找出前4名最少比赛多少场? 这是一道经常考的智力题 64匹马,我们要想知道哪匹🐎跑的最快,前提条件是每一匹🐎都要去比赛一场。所以刚开始的赛马规则是每匹马都要进行一次比赛。 步骤1: 把 64匹🐎…

盘点面试中常见的智力题

由于某些不可抗力,几篇文章做了删除,重新上架,希望于你有益。 面试为何会出现智力题? 可能是为了考察应聘者的综合分析能力、逻辑思维能力、反应能力和解决问题能力吧~ 也可能是...... “我去!这面试者能力可以啊&…

面试中常见的智力题

文章目录 一、提灯过桥问题?二、有两个鸡蛋,如何最快的试出100层楼中刚好那一层扔下鸡蛋会碎?三、在地球什么地方能够,往南走1公里,然后往东走1公里,再往北走1公里能回到原点?四、一块N x M的巧…

面试中常见智力题汇总

面试中常见智力题汇总 1. 二进制问题1.1 毒药问题1.2 分金块问题 2. 先手必胜问题2.1 抢 30的必胜策略2.2 100本书,每次能够拿1~5本,怎么拿能保证最后一次是你拿?2.3 轮流拿石子 3. 推理题3.1 掰巧克力问题3.2 辩论赛问题3.3 在24小时里面时针…

2020秋招华为笔试题-买钉子

1.题目描述 2.代码实现 主要思路&#xff1a;类似零钱兑换 #include <iostream> #include <vector> using namespace std;class Solution { public:int buyNails(vector<int>& nails, int count) {vector<int> dp(count1, -1);dp[0] 0;for(int …

华为2022硬件逻辑笔试题

单选题&#xff08;每题两分&#xff09; 1.以下关于过程赋值的描述&#xff0c;不正确的是&#xff08;&#xff09; A在非阻塞性过程赋值中&#xff0c;使用赋值符号“< ” B赋值操作符是“”的过程赋值是阻塞性过程赋值 C在非阻塞性过程赋值中&#xff0c;对目标的赋…

AJAX原理快速入门

AJAX的原理 Ajax 的原理简单来说通过 XmlHttpRequest 对象来向服务器发异步请求&#xff0c;从服务器获得数据&#xff0c;然后用 javascript 来操作 DOM 而更新页面的局部显示。 Ajax 的优点&#xff1a; 1.最大的一点是页面无刷新&#xff0c;给用户的体验非常好。 2.使用异…

Ajax详解~及原理刨析

目录 什么是Ajax 同步和异步 Ajax如何实现异步和局部刷新 Ajax工作原理 Ajax工作流程 1、创建XMLHttpRequest对象 2、创建HTTP请求 3、向服务器发送数据 4、设置回调函数 &#xff0c;在回调函数中针对不同的响应状态进行处理 完整实例 Jquery中的ajax 什么是Ajax…

和vue相似的ajax原理及vue中运用ajax

和vue相似的ajax原理及vue中运用ajax。 一&#xff0c;默认的app.vue/文件 App.vue     App.vue是项目的主组件&#xff0c;页面入口文件 &#xff0c;所有页面都在App.vue下进行切换&#xff0c;app.vue负责构建定义及页面组件归集。                二&…

ajax工作原理

ajax工作原理 在写这篇文章之前&#xff0c;曾经写过一篇关于AJAX技术的随笔&#xff0c;不过涉及到的方面很窄&#xff0c;对AJAX技术的背景、原理、优缺点等各个方面都很少涉及null。这次写这篇文章的背景是因为公司需要对内部程序员做一个培训。项目经理找到了我&#xff0…

Ajax原理学习

一、AJAX 简介 AJAX即“Asynchronous Javascript And XML”&#xff08;异步JavaScript和XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。 AJAX 是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换&#xff0c;AJAX 可以使网页…