Java中的异常传播机制
转载自:Java中的异常传播
讲述java中底层异常的类型以及如何进行处理
为了方便讲解,这里我准备了一小段异常示例代码,如下所示:
public class ExceptionTest {
static int remainder(int dividend, int divisor) throws DiviByZeroException {
try {
return dividend % divisor;
} catch (Exception e) {
throw new DiviByZeroException();
}
}
public static void main(String[] args) throws DiviByZeroException {
int result = remainder(10, 0);
System.out.println(result);
}
}
public class DiviByZeroException extends Exception {
}
上述代码中,我们声明了一个remainder函数,它接收两个int类型参数,dividend参数表示被除数,divisor参数表示除数,函数里面返回dividend/divisor的计算结果,其实就是一个求余数的过程。我们都知道这里可能会抛出除以零的异常,这里我们捕获了ArithmeticException异常,然后将ArithmeticException这个运行时异常转化成DivideByZeroException检查性异常,最后抛出这个检查性异常。这里DivideByZeroException是我们自定义的异常,它继承自Exception,故它是一个检查性异常。
然后我们需要通过javac命令对这个ExceptionTest测试类进行编译以获取到它的class字节码文件,这里就不演示了,我想大家都会。有了字节码文件,下一步我们需要查看它的字节码内容,这里我们可以通过javap命令来查看,具体操作命令如下所示:
javap -c -v -l ExceptionTest.class
然后在命令行窗口里就会返回我们想要的字节码内容,如下图所示:
不过,这里我推荐你使用JBE(Java Bytecode Editor即Java字节码编辑器)工具,因为它使用起来更方便。JBE的下载地址如下所示:
(PS:我用的是Idea中的Show Bytecode)