JavaSE基础(85) try-catch和throws的区别
try-catch和throws的区别:try-catch : 在当前位置处理异常throws: (语法格式:在方法签名之后:throws 异常类型)向上抛出异常,可以无限向上抛出,直到抛给main方法,main方法就抛给JVM虚拟机去解决即比如在3个类中,第3个类出现异常,...
try-catch和throws的区别:
try-catch : 在当前位置处理异常
throws : (语法格式: 在方法签名之后:throws 异常类型)
向上抛出异常,可以无限向上抛出,直到抛给main方法,main方法就抛给JVM虚拟机去解决
即比如在3个类中,第3个类出现异常,可向上抛给第二个类,第二个类如果不想解决,可继续抛给第一个类中去解决,然后在第一个类中(调用第三个类中方法会出现异常)==》就使用try-catch解决异常
相当于throws可以向上指定抛到某一个类里面去集合解决异常(使用try-catch解决异常),而try-catch是直接处理异常
注意:throws后可以同时抛出多个异常类型 ex:public void 方法名() throws ArithmeticException,NumberFormatException{}
throws 原理:有throws的方法的是所有代码中 , 某行代码创建了异常对象,直接去跟throws后的异常类型匹配,如果匹配不上,则自动匹配下一个,匹配上为止。
i: 如果能匹配上则向上抛出成功,由调用方法的地方来处理
ii: 如果所有的都匹配不上,则抛出失败,由jvm默认处理
ex:
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
getResult();
System.out.println("try......");
} catch (ArithmeticException e) {
// TODO: handle exception
System.out.println("catch......");
}
}
public static void getResult() throws ArithmeticException{ //把创建的异常对象抛给调用此方法的地方
System.out.println(1/0); //创建一个ArithmeticException类型的异常对象
System.out.println("========"); //如果上一行代码创建了异常对象并向上抛出了。此行代码不会执行
}
}
运行结果图:
更多推荐
所有评论(0)