weiwei_baby 2020-03-11 22:11 采纳率: 33.3%
浏览 774

调用方使用try-catch捕获异常时为何被调用方法还需throws异常?

有个问题想不明白,throws是为了可以使被调用方法的异常向上抛,上层调用必须要有try-catch语句捕获throws异常,那么问题来了,假如我上层调用中有写try-catch捕获异常,我为啥还需要在被调用方法声明中加throws?不是反正都会被捕获吗,加不加throws就无所谓了。

追问:为什么代码1中ThrowsTest类没有throws ArithmeticException不会报错,代码2中没有throws MyException就编译不过了呢?

//代码1
package trycatch;

public class ThrowsTest {
    public static void main(String args[]) {
        int num1 = 25;
        int num2 = 0;
        int result;
        if(num2 == 0) {
            throw new ArithmeticException("这都不会!");
        }
        result = num1/num2;
        System.out.println("结束了" + result);
    }
}

//代码2
package trycatch;


public class TryCatch {

public static void main(String args[]) {
    int i = 1;
    if(i == 1) {
        throw new MyException("出错了!");
    }   
 }

}

class MyException extends Exception {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public MyException(String message) {
        super(message);
    }
}
  • 写回答

2条回答 默认 最新

  • DariusEle 2020-03-12 10:49
    关注

    首先你要抛异常(指明异常),上级方法才能抓,否则会报错而不是报异常

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)