java的exception是怎么样实现的好像一只啥都会接的狗狗
java层面,try{ 可能产生异常的语句}catch(要补货的异常类型 e){ 异常处理语句}对于非RuntimeException也非Error的异常类型,要么在方法throws表中声明,要么必须将它们catch掉。这个特性就是被万人诟病的checked_exception。字节码层面,异常抛出由athrow指令控制,将栈顶异常抛出。exception处理由 exception_table控制。exception_table有4个字段start_pc, end_pc, handle_pc, exception_type分别表示捕获异常起始偏移量(inclusive),捕获异常结束偏移量(exclusive),异常处理偏移量,异常类型。要注意,checked_exception只是java需要的,而不是jvm需要的。一个方法即使可能会抛出Throwable,字节码层面也无需设置该方法的throws表。
■网友
Exception可以人为抛出,例如在任何函数中throw new XXException(), 也可以由系统产生,例如除0,或遇到中断。无论何种原因产生,当前线程都将进入异常状态,JVM知道具体异常的原因(也就是知道具体是什么Exception)。首先当前的运行语句会停止,然后开始逐步弹栈,也就是依次地跳出上一层调用的方法,如果上一层的方法有try catch语句捕捉这个异常的话,那么程序会直接跳到catch的语句的第一条,然后正常执行下去。如果弹到main函数还是没有catch到的话,就会终止程序并打印出异常信息。
推荐阅读
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 青年|一汽奔腾T77怎么样?车主吐槽:后排座椅太短,和坐小板凳似的
- 电商网站支付流程的流失率是怎么样的从用户点击充值/支付按钮,到支付完成,其中每一步的流失比率都是咋样的
- 作为一个服装供应商,怎么样与淘宝卖家沟通才能卖出自己的产品或者拿到订单
- 在丁丁租房工作的感受是怎么样的
- 城市数据团是怎么样一个团队
- win7中本地连接跟无线网卡同时使用时是怎么样的模式
- 猫扑网南迁广西,媒体唱衰BBS,论坛的未来会怎么样怎样改变
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 被人围攻是怎么样一种体验,包括但不限于(蛋糕,口舌,拳脚,西瓜刀,机枪,code review)