码迷,mamicode.com
首页 > 其他好文 > 详细

Jvm(49),指令集----异常处理指令

时间:2018-09-22 23:20:06      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:jpg   nbsp   虚拟机   dem   整数   sof   family   实现   public   

在Java程序中显式抛出异常的操作(throw语句)都由athrow指令来实现,除了用throw语句显式抛出异常情况之外,Java虚拟机规范还规定了许多运行时异常会在其他Java虚拟机指令检测到异常状况时自动抛出。例如,在前面介绍的整数运算中,当除数为零时,虚拟机会在idiv或ldiv指令中抛出ArithmeticException异常。

而在Java虚拟机中,处理异常(catch语句)不是由字节码指令来实现的(很久之前曾经使用jsr和ret指令来实现,现在已经不用了),而是采用异常表来完成的。案例一:

public class Demo5 {

public static void main(String[] args) {

 

throw new RuntimeException("我是异常")?

}

}

技术分享图片

案例二:

public class Demo5 {

public static void main(String[] args) {

 

int a = 1 / 0?

}

}

技术分享图片

是由idiv抛出来的。

public class Demo5 {

public static void main(String[] args) {

 

try {

int a = 1 / 0?

} catch (Exception e) { e.printStackTrace()?

}

}

}

 

技术分享图片

Jvm(49),指令集----异常处理指令

标签:jpg   nbsp   虚拟机   dem   整数   sof   family   实现   public   

原文地址:https://www.cnblogs.com/qingruihappy/p/9691460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!