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

相关文章

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

Python文件操作与IO流的使用方式

《Python文件操作与IO流的使用方式》:本文主要介绍Python文件操作与IO流的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python文件操作基础1. 打开文件2. 关闭文件二、文件读写操作1.www.chinasem.cn 读取文件2. 写

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

java变量内存中存储的使用方式

《java变量内存中存储的使用方式》:本文主要介绍java变量内存中存储的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍2、变量的定义3、 变量的类型4、 变量的作用域5、 内存中的存储方式总结1、介绍在 Java 中,变量是用于存储程序中数据

如何合理管控Java语言的异常

《如何合理管控Java语言的异常》:本文主要介绍如何合理管控Java语言的异常问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍2、Thorwable类3、Error4、Exception类4.1、检查异常4.2、运行时异常5、处理方式5.1. 捕获异常

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

C++类和对象之初始化列表的使用方式

《C++类和对象之初始化列表的使用方式》:本文主要介绍C++类和对象之初始化列表的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C++初始化列表详解:性能优化与正确实践什么是初始化列表?初始化列表的三大核心作用1. 性能优化:避免不必要的赋值操作2. 强

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线