运行时异常

出现异常之后,程序会中断执行(运行时异常如果没有处理,该线程会退出)
即没有catch,只有throw,必然导致最终交给jvm处理,使得程序退出

异常处理流程
在这里插入图片描述

运行时异常

运行时异常
在这里插入图片描述

运行时异常表现形式:

  1. 人为throw new NullPointerException();//人为定义throw的原因:可能是即使我不throw,jvm运行到这里发现null的时候也会自动throw。
  2. 不管:比如int c=10/0;//cxu 实际上JVM在执行到此处的时候,会new异常对象:new NullPointerException(“null”);并抛出(throw),打印信息 // 并且JVM将new的异常对象throw抛出,打印输出信息到控制台了。

运行时异常出现后程序怎么运行:
运行时异常
出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果
没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就
被main()抛出。注意虽然方法声明的地方没有抛运行时异常(throws),但运行时异常不受这个限制,会一直往上层抛,如果过程中没有catch,就最终到jvm那里了。

运行时处理办法:

  1. 程序中可以选择定义catch捕获处理:那么程序就不会退出
    2 . 程序不处理,即有捕获处理这个异常(即没有catch)系统会把异常一直往上层抛,一直到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

**

编译时异常:

**
由于调用的方法是java源方法,因此会出现throw,这样的话,我们也要throw,并catch;
出现异常后,比如m();这行出现异常(无论是这行手动throw了还是由下一层的throw返回来的),那么程序在这里中断,并开始检查本层下是否有catch、finally、方法名的throws,中断后只会从这三处开始继续执行。
对于:catch、finally:程序执行之后在这层继续向下执行;
对于方法名的throws:本层程序代码均不执行了,跳到上层调用处执行;
注意:return 是返回一个值,throw 是返回一个错误,返回给该方法的调用者。比如:String类的charAt方法就是一个很好的例子

java中的异常
finally –finally的几种情况以及程序执行顺序的具体表现
f
inally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
//即在try中会正常执行,但遇到throw或者return时,暂时不跳转,而先检测有没有catch捕捉,然后执行,再检测有没有finally,有的话先执行它再跳回来继续执行throw或者return

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值