java异常3异常处理之throws结构

深入解析 Java 中的 throw 和 throws:异常处理机制的核心 throw用于抛出一个异常对象,表示程序在某个地方遇到了问题,需要中断当前流程并将异常传递出去。throws用于方法声明中,表示该方法可能会抛出某种类型的异常,提醒调用者处理这些异常。throw和throws通常结合使用,throws在方法签名中声明异常,throw在方法内部抛出具体的异常。正确理解和使用throw和throws关键字,可以帮助程序员更好地控制程序的异常流和错误处理,提升程序的稳定性和可维护性。 阅读详情

/*
*异常处理方式2 throws
*

  • 1,throws + 异常类型写在方法的声明处,指明此方法执行时,可能会抛出的异常。
  • 当方法执行出现异常时,会在异常处生成一个异常类的对象,当此对象匹配到throws后声明的异常类型
  • 时,就会被抛出,由此方法的调用者处理异常,异常代码之后的语句不再执行。
  • 2,throws后面的异常类型可以有多个,使用,隔开。异常类型可以是方法中产生的异常类型,也可以是它的父类。
  • 3,try-catch-finally结构是真正的处理掉异常,方法被调用时也不会报异常。
  • throws 的方式只是将异常抛出给方法调用者,没有真的把异常处理掉。
  • 4,方法重写的时候,子类重写的方法不能抛出比父类更大的异常,
  • 父类方法中有抛出多个异常时,子类方法的异常类型不能比父类方法异常类型中最大的那个大。
  • 子类必须是父类的异常类型或者其子类。通常使用父类的异常类型。
  • 原因:在使用多态性时,try-catch语句里处理的异常类型是父类的类型,如果子类
  • 异常类型比父类大,则try-catch语句无法处理,父类的引用就不能使用子类的对象
  • 5,当父类方法没有throws异常类型时,子类重写的方法也不能有throws,否则违反第四条。
  • 开发中如何选择处理异常的方式:
  • 1,父类方法没有throws,子类重写的方法可能有异常,使用try-catch结构处理
  • 2,执行的方法A中调用另外的方法B,B又调用C,这几个方法是递进关系执行的,那么这几个方法可以使用throws
  • 处理,在执行方法A 的时候使用try-catch结构统一处理,如果分开处理,可能方法C出异常后,数据错误传递到后面的方法中。
  • 3,从语法上try-catch可以与throws同时使用,不过很少这样,代码冗余。
  • 4,开发中需要收集错误日志,改bug,try-catch只是提供临时预案。
  • 总结:改bug是不可避免的。

*/

package exception;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Exception_Throws {
	//main方法中处理异常,避免交给JVM处理,防止报错
	public static void main(String[] args) {
		Exception_Throws ex = new Exception_Throws();
		//两种异常统一处理
		 try {
			 ex.method1();
		 }catch(IOException e) {
			 System.out.println("程序出错");
		 }
		 //先在下一层方法中捕获异常进行处理,无法处理再到上一层处理
		 try {
			 ex.method3();
		 }catch(IOException e) {
			 System.out.println("程序出错");
		 }
		 	
	}

	//方法中只抛出异常不处理
	public void method()throws FileNotFoundException,IOException {
		File file = new File("E:\\eclipse-workspace\\Contacts\\src1.txt");
		FileInputStream fis = new FileInputStream(file);
		int date = fis.read();
		while(date != -1) {
			System.out.print((char)date);
			date = fis.read();
		}	
		fis.close();
		System.out.println("----------");
	}
	//方法中只抛出父类异常,交给上一层处理
	public void method1() throws IOException{
		method();		
	}
	
	//在方法中处理异常,只处理一种,另一种抛出给上一层
	public void method3() throws IOException{
		try {
			method();			
		}catch(FileNotFoundException e) {
			System.out.println("找不到文件");
		}
		
	}
	
    public void method4() throws FileNotFoundException,Exception{
		
	}
	
}

class SubException extends Exception_Throws{
//	public void method() throws Exception{//子类重写的方法不能抛出比父类方法中更大的异常
//		
//	}
     public void method() throws FileNotFoundException{
		
	}
     public void method4() throws Exception{
		
	}
    
}
Java异常处理--异常处理的方式2:throws 阅读详情

相关推荐

Java异常处理--异常处理知识点总结及企业真题

Java异常处理--异常处理知识点总结及企业真题

人生得意须尽欢 1369

Java中throws..throw的使用与说明

对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。虽然RuntimeException的异常可以不使用try...catch进行处理,但是如果一旦发生异常,则肯定会导致程序中断执行,所以,为了保证程序再出错后依然可以执行,在开发代码时最好使用try...catch的异常处理机制进行处理。程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。...

实际工作与学习当中的随记 1315

AURIX-TC3xx-GTM详解六-DPLL(Digital PLL Module)-寄存器1-DPLL寄存器

主要有下图这些寄存器2、

m0_69929716的博客 438

c++ try catch 问题

try{} catch(…){}以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的。例如下面的代码:try { BYTE* pch ; pch = ( BYTE* )00001234 ;   //给予一个非法地址 *pch = 6 ; //对非法地址赋值,会造成Access V

windhaunting的专栏 8万+

高通Camera AWB跳变问题实战:从夕阳场景到参数调优的完整避坑指南

本文深入解析高通Camera AWB跳变问题,特别是在夕阳场景下的色温突变现象。通过分析灰区统计失效、光源混合干扰等成因,提供从参数调优到诊断工具链的完整解决方案,包括动态灰区扩展算法、色温平滑过渡方案及高通平台特定优化技巧,帮助工程师有效解决AWB跳变问题。

sre5engineer的博客 855

QTableView为例:Qt模型视图委托(MVD)(Model-View-Delegate)

QT中的MVD(模型-视图-委托)模式是一种类似于MVC的设计模式,将数据、界面和交互逻辑分离。模型负责数据管理,视图负责显示界面,而委托则嵌入在视图中处理数据的显示和编辑。QT提供了多种视图组件(如QListView、QTreeView、QTableView)和模型类(如QStandardItemModel、QAbstractItemModel),支持数据的多样化呈现。委托(Delegate)通过定制显示和编辑行为增强了视图的灵活性。该模式适用于各类数据结构展示(列表、表格、树形),能够高效处理数据与界面

菜一头包的博客 1988

java 抛出异常 无法捕获 异常信息不见了

java 异常

a865567121的博客 1737

UE4引擎分析获取UWord,GName,GetName,GObjectArray

UE4引擎具有很多固定特征和特性 所以我们在逆向UE4引擎开发的游戏的时候,可以利用这些特征和特性. 当然,正常思路逆向也是没问题的(例如我们的ttw课程全数据逆向),你就当多了一个针对于该引擎逆向的快捷方式 或则多了一个思路即可. 正常逆向+引擎分析,使逆向结果全面且快速.

任鸟飞2217777779的博客 1万+

解析Java-throw抛出异常详细过程

Java有3种抛出异常的形式:throw、throws、系统自动抛异常。

华为云官方博客 3548

别再用Excel画波特图了!用LTspice免费仿真软件,5分钟搞定电路传递函数分析

本文介绍了如何利用LTspice免费仿真软件高效绘制波特图,解决传统Excel绘图效率低、精度不足的问题。通过详细的操作步骤和实战案例,展示LTspice在电路传递函数分析中的自动化计算、专业级精度和完整特性展示等优势,帮助工程师快速完成频率响应分析。

weixin_42524226的博客 460

Skills入门学习路线

简单来说,Skills就像是给Claude准备的”插件包"或”工具箱”。它是一个集合,里面装了特定的操作指令(Instructions)、可执行脚本(Scripts)和相关素材(Resources)。2025 年 10 月中旬,Anthropic 正式发布 Claude Skills。两个月后,Agent Skills 作为开放标准被进一步发布,意在引导一个新的 AI Agent 开发生态。OpenAI、Github、VS Code、Cursor 均已跟进。为了更好的理解,你可以把。

十二测试录 1096

Java异常十:使用throws声明异常类型

汽车可能出现各种故障,但汽车本身并没有能力来处理这些故障,这些故障需要开车的人来处理。 当一个方法中可能会出现异常,但是这个方法自身并不想或者没有能力去处理这些异常的时候,那么可以在该方法的声明处通过throws关键字来声明抛出这个异常,谁接到了这个异常就由谁来处理这个异常(即,谁调用了这个方法谁就会来处理这个异常) 1.throws简单语法规则 通过前几篇博客可知,可以通过try-catch-finally来处理异常;但当一个方法不愿意处理异常的时候,就可以使用throws关键字声明异常,这样这个方

小枯林的博客 1503

14、X射线图像处理与特征提取全解析

本文全面解析了X射线图像处理与特征提取的关键技术,涵盖图像预处理、滤波、边缘检测、分割与恢复等流程,并深入探讨了几何特征(如面积、周长、圆度、椭圆拟合)、强度特征(均值、方差、对比度)、傅里叶描述符、不变矩(Hu矩、Gupta矩)以及局部描述符(SIFT、SURF)和稀疏表示方法。同时介绍了特征选择的过滤法、包装法和嵌入法,并结合Matlab代码示例展示了各类特征的实际提取过程。文章最后总结了当前技术的应用现状,并展望了深度学习在X射线图像分析中的未来潜力。

pz89012345的博客 133

Java后端学习系列(3):Java异常处理与常用类库

ArrayList:动态数组,相较于普通数组,它可以方便地进行元素的添加、删除和修改等操作。示例如下:HashMap:用于存储键值对数据,能根据键快速查找对应的值,在很多场景中用于数据的映射和缓存等。示例::提供了一系列对集合进行操作的静态方法,比如对集合进行排序、反转等操作。

Azperk的博客 977

Python 爬虫实战:京东商品价格与评论数据爬取

本文介绍了使用Python爬取京东商品价格与评论数据的完整流程。主要内容包括: 环境准备:安装requests、BeautifulSoup、pandas等库,建议使用Python 3.8+虚拟环境。 目标分析: 商品列表页(HTML)包含名称、价格、SKU ID等数据 评论数据通过JSON API获取 反爬策略: 随机User-Agent 请求延迟2-5秒 设置必要Cookie 代码实现: 基础配置:设置输出目录、随机UA生成器 搜索列表页爬取:解析HTML获取商品基本信息 评论数据爬取:通过JSON AP

u014481728的博客 418

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java-异常处理机制-throws

2、如果父类被重写的方法没有throws异常类型,则子类重写的方法中如果出现异常,只能考虑使用try-catch-finally进行处理,不能throws。“手动抛”:程序在执行的过程当中,不满足指定条件的情况下,我们主动的使用"throw + 异常类的对象"方式抛出异常对象。“自动抛”:程序在执行的过程当中,一旦出现异常,就会在出现异常的代码处,自动生成对应异常类的对象,并将此对象抛出。子类重写的方法抛出的异常类型可以与父类被重写的方法抛出的异常类型相同,或者是父类被重写的方法抛出异常类型的子类。

python全栈 6619

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java异常处理中throw与throws的用法区别

前言 说到异常,我们当然会想到try catch finally。当然如果用这个的话,被try块包围的代码说明这段代码可能会发生异常,一旦发生异常,异常便会被catch捕获到,然后需要在catch块中进行异常处理。当然这只是一种处理异常的方式,那么在java中还有另一种处理方式就是抛出异常,让调用者进行处理,自己就不再负责了,就学习到了throw 和throws。那么两者有什么区别呢 thro

odelia的博客 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java异常处理

什么是异常 异常处理 如何捕捉异常? finally语句 常见异常 自定义异常 那么具体如何自定义异常类呢? throw关键字 throws关键字 运行时异常 异常处理流程

随便写点C++和JAVA的知识 6299

Java中的throw和throws:异常处理详解

本篇博客详细讲解了throw和throws这两个关键字的使用,以及它们之间的区别。throw关键字用于手动抛出异常,而throws关键字用于声明方法可能抛出的异常。它们都有助于编写更加健壮的异常处理代码。希望通过这篇博客,读者能更好地掌握这两个关键字的用法,并在实际编程中灵活运用。

weixin_53607413的博客 4976

java异常处理之throw, throws,try和catch

    程序运行过程中可能会出现异常情况,比如被0除、对负数计算平方根等,还有可能会出现致命的错误,比如内存不足,磁盘损坏无法读取文件等,对于异常和错误情况的处理,统称为异常处理。    Java异常处理主要通过5个关键字控制:try、catch、throw、throws和finally。try的意思是试试它所包含的代码段中是否会发生异常;而catch当有异常时抓住它,并进行相应的处理,使程序不受

上善若水 13万+

Java异常处理

Java允许开发者根据业务需求创建自定义异常类。自定义异常通常继承自`Exception`或`RuntimeException`,并且可以添加额外的信息或行为。// 处理输入在这个例子中,当输入无效时,抛出自定义异常`InvalidUserInputException`。调用者必须处理这个异常。Java异常处理是Java语言中的一项重要功能,用于处理在程序执行过程中出现的错误或异常情况。

Flying_Fish_roe的博客 1744

Java异常处理throws/throw

Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。 • Runtime异常:所有的RuntimeException类及其子类的实例; • Checked异常:不是RuntimeException类及其子类的异常实例。 只有Java语言提供了Checked异常,其他语言都没有提供Checked异常。Java认为 Checked异常都是可以被处理(修复)的异常,所以J...

Brave的博客 1083

Java中三大异常处理方式(try-catch、throw、throws)

让我们把这三个关键词串联在一个完整的业务逻辑中:假设我们有一个银行转账// 1. throws 声明:// 这个方法告诉外界:“我可能会遇到钱不够的情况,调用者要准备好处理”// 2. throw 抛出:// 程序员发现逻辑错误(转账金额为负),主动制造异常扔出去throw new IllegalArgumentException("转账金额不能是负数!");// 3. throw 抛出:// 发现余额不足,主动制造一个“余额不足异常”扔出去。

m0_74087113的博客 1328

Java异常处理——try-catch-finally、throws,throw及体系结构

一、概述 java程序在执行过程中所发生异常事件可分为两类 Error:Java虚拟机无法解决的严重问题。如:JVM内部错误,资源耗尽等严重情况,比如:StackOverflowError,一般不编写针对性的代码进行处理 public static void main(String[] args) { //1.栈溢出:java.lang.StackOverflowError ...

似水流年,是谁苍白了等待 1514

Java 异常处理全流程保姆级教程

在 Java 中,虽然 JDK 提供了大量的内置异常类(如),但在实际开发中,这些标准异常往往无法精准描述业务场景中的特定错误。用户注册时用户名已存在订单支付时余额不足权限校验时角色不匹配会触发 Java 内置的(算术异常),以此异常为例进行业务分析,步骤如下:第一步// 1. 继承RuntimeException// 2. 添加构造方法(传入错误信息)第二步// 3. 在除法方法中检查除数并抛出异常//表示当前代码手动抛出一个异常。

2402_89658129的博客 2094

java 异常的使用 异常处理 throws throw Exception

关键词:java 异常类 异常处理 throws throw Exception 如果一个类称为异常类,必须要继承异常体系(Exception,RuntimeException),因为只有异常体系的子类才具有可抛性 编译时检测异常:只要是Exception和其子类都在编译时检测,除了特殊子类RuntimeException 自定义异常时只能继承Exception或者 Ru...

weixin_42362496的博客 3073
上一篇: java异常2 异常处理之try-catch-finally结构
下一篇: java异常4 手动抛出异常与自定义异常类
wisdomcodeinside
博客等级 码龄7年 29粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值