将异常throws给jvm后,jvm默认处理:打印异常信息,并中断程序,这我是知道的。
那下面我自定义了一个编译异常,并在main方法中的if条件句抛出,编译器提示有编译异常;说明出现编译异常。
我main方法throws异常后,编译器提示正常了;处理方式是让jvm处理异常。
运行程序,程序正常运行,没有打印异常信息;那jvm也没处理啊。
jvm收没收到异常呢?还是说根本没异常?没有异常那我用的throws方法throws的谁呢?
收到的话应该直接打印呀,很困惑。
编译器判断是否有编译异常是怎样判断的呢?很迷惑这个过程
public class ExceptionTest {
public static void main(String[] args) throws AgeException {
int a = 1;
if (a < 0) {
//抛出一个编译异常
throw new AgeException("有异常,打印信息");
}
System.out.println("没有异常,打印个g");
}
}
//自定义AgeException编译异常,继承ioexception这个编译异常
class AgeException extends IOException {
public AgeException(String s) {
super(s);
}
}