java_throw和throws的区别

在这里插入图片描述

测试题1

在这里插入图片描述

测试题2

在这里插入图片描述

package com.hspedu.customexception_;

public class Homework01 {
    public static void main(String[] args) {

        try {
            //先验证输入的个数是否正确 两个参数
            if(args.length != 2){
                throw new ArrayIndexOutOfBoundsException("参数个数不对");
            }
            //先把接收到的参数 ,转成整数
            int n1 = Integer.parseInt(args[0]);
            int n2 = Integer.parseInt(args[1]);

            double res = cal(n1,n2); //该方法可能抛出ArithmeticException
            System.out.println("计算结果是=" + res );

        } catch (ArrayIndexOutOfBoundsException e) {
            throw new RuntimeException(e);
        } catch (NumberFormatException e){
            System.out.println("参数格式不正确,需要输出整数");
        } catch (ArithmeticException e) {
            System.out.println("出现了除0异常");
        }
    }
    public static double cal(int n1,int n2){
        return n1/n2;
    }
}

测试题3

在这里插入图片描述

package com.hspedu.customexception_;

public class Homework02 {
    public static void main (String[] args) {

        //args.length = 0;
        //这里发生的是 ArrayIndexOutOfBoundsException
        if(args[4].equals("john")){
            System.out.println("AAA");
        } else {
            System.out.println("BBB");
        }
        Object o = args[2]; //String->Object,向上转型
        Integer i = (Integer) o;//错误,这里一定会发生 ClasscastException
    }
}

测试题4

在这里插入图片描述

测试题5

在这里插入图片描述

Java 异常处理机制中,`throw` `throws` 是两个关键组成部分,分别用于不同的目的。 ### throw 关键字 `throw` 用于在方法体内显式地抛出一个异常对象。它通常用于在检测到错误条件时,手动引发异常。例如,当某个方法的参数不符合预期时,可以使用 `throw` 抛出一个异常以通知调用者。 ```java public static void divide(int a, int b) { if (b == 0) { throw new ArithmeticException("除数不能为零"); } System.out.println(a / b); } ``` 在这个例子中,当除数为零时,程序抛出一个 `ArithmeticException` 异常[^2]。 ### throws 关键字 `throws` 用于方法声明中,表示该方法可能会抛出的异常类型。它并不实际抛出异常,而是告诉编译器方法的调用者,该方法可能会抛出某些异常,调用者需要处理这些异常(通过 `try-catch` 块或继续向上抛出)。 ```java public void readFile(String fileName) throws FileNotFoundException { // 方法体 } ``` 上述代码中,`readFile` 方法声明了它可能会抛出 `FileNotFoundException`,调用者必须处理这个异常[^1]。 ### 语义上的区别 - `throw` 是用于抛出具体的异常实例,它出现在方法内部。 - `throws` 是用于声明方法可能抛出的异常类型,它出现在方法签名中。 ### 使用场景 - 当需要在方法内部抛出异常时,使用 `throw`。 - 当需要将异常传递给调用者时,使用 `throws` 声明在方法上。 ### 示例代码 以下是一个结合 `throw` `throws` 的示例: ```java import java.io.*; public class ExceptionDemo { public static void main(String[] args) { try { readFile("nonexistentfile.txt"); } catch (FileNotFoundException e) { System.out.println("捕获到异常: " + e.getMessage()); } } public static void readFile(String fileName) throws FileNotFoundException { if (!new java.io.File(fileName).exists()) { throw new FileNotFoundException("文件不存在: " + fileName); } // 正常读取文件的逻辑 } } ``` 在这个示例中,`readFile` 方法使用 `throws` 声明它可能会抛出 `FileNotFoundException`,而 `throw` 则在方法内部抛出了具体的异常实例[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHppGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值