现在的位置: 首页 > 综合 > 正文

java 异常机制

2013年09月18日 ⁄ 综合 ⁄ 共 1237字 ⁄ 字号 评论关闭

        之前在公司听到老大给我们讲解异常机制,就想写个这方面的东西。拖了两个星期,终于有时间可以写了。

        首先,先抛今天要讲的东西

        1、为什么要有异常

        2、异常有哪些分类

3、异常处理可能要注意哪些东西

        4、平时项目中应该如何使用异常

        为什么要有异常?程序执行时经常会出现除零溢出、数组越界等运行错误,影响程序的正常执行。错误及异常是不可避免的,一个好的应用程序,在满足用户要求的各种功能的同时,还应具备能预见程序执行过程中可能产生的各种异常的能力,并能为异常情况给予恰当处理。在Java语言中,这种技术就是异常处理
       Java语言通过面向对象的异常处理机制来解决运行期间的错误,可以预防错误的程序代码或系统错误所造成的不可预期的结果发生。减少编程人员的工作,增加了程序的灵活性。

异常的分类:首先异常分为两个大类  一个是ERROR 一个是Exception  。error级别的错误 常指java 一些程序员无法控制的错误 比如常见的java.lang.OutOfMemoryError

还有一种就是Exception 我们最常见的异常 它又分了两种 一种是受检查异常 一种是非检查异常 。受检查异常 强制代码必须捕获异常或抛出异常 。非检查异常 顾名思义不需要任何强制抛出 可是我们程序中使用的最多的就是这种非检查异常。在平时的使用中,我们程序员 通过对代码的预期的错误 通过异常机制对可能出错的代码进行处理。比如把错误返回给使用者让使用者知道大概哪里出了错误或者对错误进行回复
当然 平时一般捕获异常 很少有人对异常进行回复。

      在学习异常的时候,我们必须先知道一些方法的作用 printStackTrace() 在控制台打印错误信息 fillInStackTrace() 更新记录错误的地点 initCause()添加异常链,

在平时使用异常的过程中,有一些情况必须注意

我在print()方法里面抛出了一个异常,在捕获的异常的时候直接e.printStackTrace();方法,其实这是个很常见的错误 ,很多人都会犯这错误。在捕获异常的时候没有处理。而是直接打印异常错误信息,那样只是在程序员调试的时候方便,但是在客户使用的时候 ,却没用用处。


下面说第二个要注意的情况 小心使用finally  先看代码 




执行这段程序的时候用 调用lostMessage.f();应该抛出的异常是信息是 A very important exception! 可是结果呢?


是不是很奇怪 为什么抛出的异常不对 。是的 这就是异常丢失 。这个是java异常实现的瑕疵 。想细究为什么的朋友 ,可以 查下thinking in java的异常机制。


       那么我们在项目中该如何合理的使用异常机制呢? 要知道我们使用异常的目的 ,就是为了在可能出错的地方捕获到预期的异常 然后将其进行处理 要么回复,要么返回给使用者 让时候者知道哪里出了错误。 所以我们在使用的时候要匹配异常

在匹配异常的时候 ,预期出了什么异常 ,就可以再相应级别异常信息里进行处理。 

抱歉!评论已关闭.