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中IP和整数相互转化的方法

    JAVA中IP和整数相互转化的方法

    这篇文章主要介绍了JAVA中IP和整数相互转化的方法,涉及java数值转换的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 11种Spring AI文档切割策略全解析

    11种Spring AI文档切割策略全解析

    本文将深入讲解 Spring AI 中 11 种文档切割策略的原理、适用场景和实战用法,特别重点介绍 5 种高级切割策略,有需要的小伙伴可以了解下
    2026-03-03
  • java使用正则表达校验手机号码示例(手机号码正则)

    java使用正则表达校验手机号码示例(手机号码正则)

    这篇文章主要介绍了java使用正则表达校验手机号码示例,可校验三个号码段:13*、15*、18*,大家根据自己的需要增加自己的号码段就可以了
    2014-03-03
  • Java程序执行Cmd指令所遇问题记录及解决方案

    Java程序执行Cmd指令所遇问题记录及解决方案

    这篇文章主要介绍了Java程序执行Cmd指令所遇问题记录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 浅析JAVA 循环结构

    浅析JAVA 循环结构

    这篇文章主要介绍了JAVA 循环结构的相关资料,文中讲解的非常细致,示例代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 详解MyBatis中Executor执行SQL语句的过程

    详解MyBatis中Executor执行SQL语句的过程

    MyBatis中获取SqlSession时会创建执行器Executor并存放在SqlSession中,本篇文章将以MapperMethod的execute() 方法作为起点,对MyBatis中的一次实际执行请求进行说明,并结合源码对执行器Executor的原理进行阐释
    2023-07-07
  • java zip文件解压后无法删除原zip文件问题

    java zip文件解压后无法删除原zip文件问题

    这篇文章主要介绍了java zip文件解压后无法删除原zip文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • java基础-给出一个随机字符串,判断有多少字母?多少数字?

    java基础-给出一个随机字符串,判断有多少字母?多少数字?

    这篇文章主要介绍了java基础-给出一个随机字符串,判断有多少字母?多少数字?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 关于JDK8升级17及springboot 2.x升级3.x详细指南

    关于JDK8升级17及springboot 2.x升级3.x详细指南

    这篇文章主要介绍了关于JDK8升级17及springboot 2.x升级3.x的相关资料,还讨论了JPA包路径从javax改为jakarta,以及Spring Boot版本升级和Redis配置调整等,需要的朋友可以参考下
    2025-01-01
  • MyBatis中有关int和Integer的使用方式

    MyBatis中有关int和Integer的使用方式

    这篇文章主要介绍了MyBatis中有关int和Integer的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论