java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java  throws 与 throw

Java中throws 与 throw 的区别与用法示例详解

作者:菜鸟不学编程

本文给大家介绍Java中throws与throw的区别与用法示例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

一、先看最短总结

关键字作用出现位置常用于
throw抛出一个异常对象(实际动作)方法体内部立即抛出某个异常
throws声明方法可能抛出的异常类型(承诺/说明)方法声明处告诉调用者“我可能抛异常”

一句话记忆:

throw 是“扔出异常”,throws 是“声明可能会扔异常”。

二、throw:真正“扔出”异常

throw 用于在方法内部创建并抛出一个异常对象,程序执行到 throw 就会立刻中断,并把异常抛给调用者,或者被当前方法内部的 try-catch 捕获。

语法:

throw new 异常类型("异常信息");

示例 1:手动抛出异常

public class ThrowExample {
    public static void main(String[] args) {
        int age = -5;
        if (age < 0) {
            throw new IllegalArgumentException("年龄不能为负数!");
        }
        System.out.println("年龄是:" + age);
    }
}

输出:

Exception in thread "main" java.lang.IllegalArgumentException: 年龄不能为负数!
    at ThrowExample.main(ThrowExample.java:5)

解释:

示例 2:配合 try-catch 捕获异常

public class ThrowExample {
    public static void main(String[] args) {
        try {
            checkAge(-5);
        } catch (IllegalArgumentException e) {
            System.out.println("捕获到异常:" + e.getMessage());
        }
    }
    public static void checkAge(int age) {
        if (age < 0) {
            throw new IllegalArgumentException("年龄不能为负数!");
        }
        System.out.println("年龄是:" + age);
    }
}

输出:

捕获到异常:年龄不能为负数!

🎯 要点:

三、throws:声明可能抛出的异常

throws 并不真正抛出异常,而是用于声明“我这个方法 可能 抛出某种异常”,提醒调用者必须关注这个异常。

语法:

修饰符 返回值类型 方法名(参数列表) throws 异常类型1, 异常类型2, ... {
    // 方法体
}

示例:声明方法可能抛异常

比如读文件时,FileReader 的构造方法可能抛 FileNotFoundException,你就必须用 throws 声明:

import java.io.FileReader;
import java.io.FileNotFoundException;
public class ThrowsExample {
    public static void main(String[] args) {
        try {
            readFile("test.txt");
        } catch (FileNotFoundException e) {
            System.out.println("捕获到异常:" + e.getMessage());
        }
    }
    public static void readFile(String path) throws FileNotFoundException {
        FileReader fr = new FileReader(path);
        System.out.println("文件读取成功!");
    }
}

如果不写 try-catch,而又不在方法签名里写 throws,编译器会报错。

🎯 要点:

四、throw 和 throws 的区别

比较throwthrows
位置方法体内方法声明处
作用真正抛出异常声明可能会抛异常
后面跟异常对象异常类型(类名)
数量一次只能抛一个异常对象可声明多个异常类型,用逗号分隔
是否是执行动作否,仅声明

五、Checked 与 Unchecked 异常与 throws 的关系

Java 异常分两类:

⚠️ throws 主要用于声明 Checked Exception。

示例:throws 通常声明 Checked Exception

public void readData() throws IOException {
    // code that may throw IOException
}

而对于 RuntimeException(Unchecked),一般不用写 throws:

public void divide(int a, int b) {
    if (b == 0) {
        throw new ArithmeticException("除数不能为零!");
    }
}

六、经典面试题

throw 和 throws 有什么区别?

简答:

throw 用于方法体内,真正抛出异常对象;
throws 用于方法声明处,表示该方法可能抛出哪些异常类型,提醒调用者处理。

✅ 重点记忆

这样,你是不是对 throwthrows 一下就清楚了呢?😎

到此这篇关于Java中throws 与 throw 的区别与用法示例详解的文章就介绍到这了,更多相关java throws 与 throw 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文