浅谈Java异常处理机制

一、众所周知,当我们在编写程序或者运行程序时,经常出现难以预料的各种状况,这就是异常。

在Java的API中将throwable类的众多子类用来描述各种不同的异常。

通常情况下,我们将throwable分为Error和Exception,而他们的子类又分别描述不同的异常。

1、Error:

      翻译为错误,指的是程序无法处理的错误,表示在运行时遇到的问题比较严重,当错误发生时,常常与伴随着程序的停止运行。

2、Exception:

      译为异常,这里指的是程序本身可以处理的异常,这里又可以把异常进行细分:

     按照可否查询来区分:可查异常、不可查异常;

     按照异常发生时间段来区分:运行时异常、非运行时异常(编译期异常)。

二、在 Java 应用程序中,异常处理机制为:抛出异常,捕获异常。

   抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。

   捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统没有找到合适的异常处理器,则系统终止运行。同时,意味着Java程序的终止。

   通常我们用try/catch/finally来捕获异常,try后面接可能出现异常的代码,作为一个监控的区域,当该区域出现异常时,就创建一个异常对象,然后试图尝试找到与之匹配的catch语句,如果找到,就运行这段异常代码。这里所说的匹配指的是:如果该抛出的异常对象属于catch语句的异常类,或者说是属于该异常类的一个子类,那么就认为匹配。

   另外,被finally修饰的语句无论是否捕获或处理异常都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。经过查阅资料得出在下列几种情况下finally块不会被执行:
   1、在finally语句块中发生了异常。
   2、在前面的代码中用了System.exit()退出程序。
   3、程序所在的线程死亡。
   4、关闭CPU。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值