Java中的throws异常处理及使用细节

 更新时间:2025年10月28日 17:00:45   作者:麦麦鸡腿堡  
本文给大家介绍Java中的throws异常处理注意事项和使用细节,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

一. throw关键字:

1.作用:

   throw关键字用于在程序中手动抛出一个异常。当异常发生时,程序会中断当前的执行流程,并将异常信息传递给上层的异常处理机制。

2.使用场景:

  (a)当我们发现某些条件不符合业务逻辑要求时,我们可以使用throw关键字抛出一个异常。
  (b)当我们在定义自己的异常类时,可以通过throw关键字主动抛出这个自定义的异常对象。

3.代码示例:

public void checkAge(int age) {
   if (age < 0) {
     throw new IllegalArgumentException("年龄不能为负数");
   }
}

二. throws关键字:

1.作用:

  throws关键字用于指定方法可能抛出的异常。它标识了哪些异常可以传递到方法的调用者,需要调用者进行相应的处理。

2.使用场景:

  (a)当方法内部的代码可能会引发异常时,可以使用throws关键字声明这些异常。
  (b)当我们不希望在当前方法中捕获异常,并且希望将异常传递给上层调用者来处理时,可以使用throws关键字。

3.代码示例:

public void readFile() throws IOException {
   // 异常处理逻辑
}

三. 区别与联系:

throw关键字是用于在方法内抛出异常,而throws关键字是在方法声明中指定可能抛出的异常。

Java的throws异常处理

基本介绍:

1)如果一个方法(中的执行语句)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示的声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理

2)在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类

package com.exception_;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Throws01 {
    public static void main(String[] args) {
    }
    public void f1() throws FileNotFoundException,NullPointerException,ArithmeticException{ //也可以写throws Exception
        //创建了一个文件流对象
        //解读:
        //这里的异常是一个FileNotFoundException 编译异常,必须对其处理
        //使用try-catch-finally处理
        //或使用throws抛出异常,让调用f1()的调用者来处理
        //throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类(如Exception,Error(基类)和它的父类)
        //throws 关键字后也可以是 异常列表,即可以抛出多个异常
        FileInputStream fis = new FileInputStream("d://aa.txt");
    }
}

注意事项和使用细节:

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

2)对于运行时异常,程序中如果没有处理,默认就是throws的方式

3)子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类型

4)在throws过程中,如果有方法try-catch,就相当于处理异常,就可以不必throws

package com.exception_;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class ThrowsDetails {
    public static void main(String[] args) {
    }
    public void f2() /*throws ArithmeticException 把异常抛给调用者,默认不写也有*/
    {
        int n1 = 10;
        int n2 = 0;
        double res = n1/n2;
    }
    public void f1() throws FileNotFoundException{
        f3();//当f1()不去throws时,这个语句会报错
        //解读:
        //1.因为f3() 方法抛出的是一个编译异常
        //2.即这时,就要求f1() 必须处理这个异常(try-catch或继续throws)
    }
    public void f3() throws FileNotFoundException {
        FileInputStream fis = new FileInputStream("d://aa.txt");
    }
    public static void f4(){
        f5();//这里直接调用f5不会报错
        //解读:
        //f5抛出的是一个运行异常
        //java中并不要求程序员显示处理,因为有默认处理机制
    }
    public static void f5() throws ArithmeticException{
    }
}
class Father{//父类
    public void method() throws RuntimeException{
    }
}
class Son extends Father{//子类
//子类重写父类的方法时,对抛出异常的规定:
//子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类型
    @Override
    public void method() throws NullPointerException{//子类抛出的类型必须是它父类抛出类型的子类
        super.method();
    }
}

到此这篇关于Java中的throws异常处理及使用细节的文章就介绍到这了,更多相关java throws异常内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java springboot 整合 Nacos的实例代码

    Java springboot 整合 Nacos的实例代码

    这篇文章主要介绍了Java springboot 整合 Nacos的实例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • IDEA关闭SpringBoot程序后仍然占用端口的排查与解决方法

    IDEA关闭SpringBoot程序后仍然占用端口的排查与解决方法

    在使用 IntelliJ IDEA 开发 Spring Boot 应用时,有时即使关闭了应用,程序仍然占用端口,这会导致重新启动应用时出现端口被占用的错误,所以本文给大家介绍了IDEA关闭SpringBoot程序后仍然占用端口的排查与解决方法,需要的朋友可以参考下
    2025-02-02
  • JVM之参数分配(全面讲解)

    JVM之参数分配(全面讲解)

    下面小编就为大家带来一篇JVM之参数分配(全面讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 如何解决遇到的错误信息 java: 找不到符号 符号: 变量 log

    如何解决遇到的错误信息 java: 找不到符号 符号: 变量 log

    使用Lombok的@Slf4j注解时出现log变量找不到问题,这篇文章主要介绍了如何解决遇到的错误信息 java: 找不到符号 符号: 变量 log的相关资料,文中将解决的办法介绍的非常详细,需要的朋友可以参考下
    2025-05-05
  • @GrpcServise 注解的作用和使用示例详解

    @GrpcServise 注解的作用和使用示例详解

    @GrpcService 是一个 Spring Boot 处理器,它会查找实现了 grpc::BindableService 接口的类,并将其包装成一个 Spring Bean 对象,这篇文章主要介绍了@GrpcServise 注解的作用和使用,需要的朋友可以参考下
    2023-05-05
  • Java实现俄罗斯方块小游戏源码

    Java实现俄罗斯方块小游戏源码

    这篇文章主要为大家详细介绍了Java实现俄罗斯方块小游戏源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Java软件设计模式之桥接模式详解

    Java软件设计模式之桥接模式详解

    这篇文章主要介绍了Java软件设计模式之桥接模式详解,桥接模式也叫做桥梁模式,结构型设计模式的一种,顾名思义,就是用来连接两个部分,为被分离了的抽象部分和实现部分搭桥,需要的朋友可以参考下
    2023-07-07
  • SpringMVC用JsonSerialize日期转换方法

    SpringMVC用JsonSerialize日期转换方法

    下面小编就为大家带来一篇SpringMVC用JsonSerialize日期转换方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起 小编过来看看吧
    2016-11-11
  • Java Swing程序设计实战

    Java Swing程序设计实战

    今天教大家怎么用JavaSwing工具包实现一个程序的界面设计,文中有非常详细的代码示例及注释,对正在学习Java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • SpringBoot如何读取application.properties配置文件

    SpringBoot如何读取application.properties配置文件

    这篇文章主要介绍了SpringBoot如何读取application.properties配置文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05

最新评论