我还是个菜鸡.如果有人看到请带思考阅读...
一、前言
Java中的异常有两种
- 编译时异常(受检异常)
写代码的时候就划红线,明确要求去处理.
- 运行时异常(非受检异常)
写代码的时候不会有问题,运行的时候才会报错.
二、调用某个方法
1.不要管调用的方法内部多复杂,只要关注调用的方法的最外层是否有异常抛出.
调用某个方法,内部的异常能不能被捕捉到.
我们只用关心调用的该方法中,最外层是否有异常抛出.
抛出的是什么,我们就能捕获到什么,甚至可以用更厉害的catch Exception来处理.
//RuntimeException是继承自Exception的
public class RuntimeException extends Exception {
...
}
2.有的方法内部catch到异常是不抛出异常的
比如像下面这样,方法最外层捕捉到异常后,选择返回值而不是抛出去.
public static int doSome(int num) {
try {
if (num % 2 == 0) {
System.out.println("出现异常");
throw new Exception();
}
} catch (Exception e) {
return -1;
}
return 0;
}
调用该方法时catch是捕捉不到的
public static void main(String[] args) {
try {
doSome(2);
} catch (Exception myException) {
System.out.println("捕捉到异常");
}
}
运行结果:
调用的doSome()内部出现了异常,调用时直接catch后,"捕捉到异常"未输出.
出现异常