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 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类