异常处理的方式2:throws

2024-04-06 16:28
文章标签 异常 处理 方式 throws

本文主要是介绍异常处理的方式2:throws,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

异常处理的方式2:throws
1. 格式:在方法的声明除,使用"throws 异常类型1,异常类型2,..."2. 举例:public void test() throws 异常类型1,异常类型2,.. {//可能存在编译时异常
}

package chapter09_exception.src.com.atguigu03._throws;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;/*** @author 尚硅谷-宋红康* @create 15:24*/
public class ThrowsTest {public static void main(String[] args) {methond3();}public  static  void  methond3  (){try {methond2();} catch (FileNotFoundException e) {e.printStackTrace();}catch (IOException e) {e.printStackTrace();}}public static  void  methond2() throws FileNotFoundException, IOException {method1();}public static void method1() throws FileNotFoundException, IOException {File file = new File("D:\\hello.txt");FileInputStream fis = new FileInputStream(file); //可能报FileNotFoundExceptionint data = fis.read(); //可能报IOExceptionwhile(data != -1){System.out.print((char)data);data = fis.read(); //可能报IOException}fis.close(); //可能报IOException}}

 

3. 是否真正处理了异常?
> 从编译是否能通过的角度看,看成是给出了异常万一要是出现时候的解决方案。此方案就是,继续向上抛出(throws)。
> 但是,此throws的方式,仅是将可能出现的异常抛给了此方法的调用者。此调用者仍然需要考虑如何处理相关异常。从这个角度来看,throws的方式不算是真正意义上处理了异常。
4. 方法的重写的要求:(针对于编译时异常来说的)
子类重写的方法抛出的异常类型可以与父类被重写的方法抛出的异常类型相同,或是父类被重写的方法抛出的异常类型的子类。

package chapter09_exception.src.com.atguigu03._throws;import java.io.FileNotFoundException;
import java.io.IOException;/*** ClassName: OverrideTest* Package: chapter09_exception.src.com.atguigu03._throws* Description:** @Author 小白* @Create 2024/4/6 14:24* @Version 1.0*/
public class OverrideTest {public static void main(String[] args) {Father f =new Son();try {f.method1();} catch (IOException e) {e.printStackTrace();}//父类调用方法用Number接收  因为父类的返回值就是 Number  实际执行的时候是子类重写的方法//子类返回的是Integer  体现的是多态性Number n= f.method4();}}//因为多态性 编译看父类 所以编译时的异常在父类(比如本例中父类的异常IOException已经处理了)
// 就已经处理了(就已经try{}catch{}了)
// 所以子类的 throws异常(比如本例的FileNotFoundException异常)不能大于父类的异常
class  Father{public  void method1() throws IOException {}//父类没有抛出异常 刚子类就不要去抛public  void method2()  {}public  void method3()  {}public  Number method4()  {return  null;}}class Son extends Father{public void  method1() throws FileNotFoundException {}//父类没有抛出异常 则类就不要去抛  也就是不能用throws  如果子类有异常只能只能try{}catch{}
//    public  void method2() throws IOException {
//
//    }//虽然说父类没有抛出异常 则子类就不要去抛  但是可以抛运行时异常  不过写不写throws RuntimeException//都没有多大关系 也就是说子类这边也是可以不用抛public  void method3 () throws RuntimeException {}public  Integer method4()  {return  null;}}

 

5. 开发中,如何选择异常处理的两种方式?(重要、经验之谈)
- 如果程序代码中,涉及到资源的调用(流、数据库连接、网络连接等),则必须考虑使用try-catch-finally来处理,保证不出现内存泄漏。
- 如果父类被重写的方法没有throws异常类型,则子类重写的方法中如果出现异常,只能考虑使用try-catch-finally进行处理,不能throws。
- 开发中,方法a中依次调用了方法b,c,d等方法,方法b,c,d之间是递进关系。此时,如果方法b,c,d中有异常,我们通常选择使用throws,而方法a中通常选择使用try-catch-finally。

这篇关于异常处理的方式2:throws的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/880306

相关文章

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

AJAX请求上传下载进度监控实现方式

《AJAX请求上传下载进度监控实现方式》在日常Web开发中,AJAX(AsynchronousJavaScriptandXML)被广泛用于异步请求数据,而无需刷新整个页面,:本文主要介绍AJAX请... 目录1. 前言2. 基于XMLHttpRequest的进度监控2.1 基础版文件上传监控2.2 增强版多