异常处理的方式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

相关文章

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

C#读写文本文件的多种方式详解

《C#读写文本文件的多种方式详解》这篇文章主要为大家详细介绍了C#中各种常用的文件读写方式,包括文本文件,二进制文件、CSV文件、JSON文件等,有需要的小伙伴可以参考一下... 目录一、文本文件读写1. 使用 File 类的静态方法2. 使用 StreamReader 和 StreamWriter二、二进

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器