Java的异常处理

       异常处理一直都是程序设计中一个重要的方面,不管是哪种语言都有这个东西。个人认为异常其实指的是一种错误,但不是说每一种错误都是异常。而java异常中的错误指的是程序在运行中发生的一种现象,比如说某数除以0,数组下标越界,读取文件不存在等等。java在执行过程中如果发生这些异常事件,就会生成一个异常类对象,这个异常对象封装了这些异常事件的信息并将它提交给java运行时系统,这个过程就是抛出异常,当java运行时系统接受到这些异常对象时,会寻找能处理这一异常的代码并将当前异常对象交出处理,这个过程就是捕获异常。

异常类:

           
说明:
        Throwable类下包含Error和Exception两大类,Exception类主要包含RuntimeException类
        Error类:错误,由java虚拟机生成并抛出,包含动态链接失败、虚拟机错误等,程序对其不处理
        Exception类:异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显示的声明或捕获,它分为运行时异常,即RuntimeException,另一类是受检查异常,受检查异常要么将其捕获处理,要么声明抛出,否则程序编译不成功。
        RuntimeException类:特殊异常类,例如被0除,数组下标越界等,产生频繁,处理麻烦,如果对其显示声明或者捕获将对可读性和运行效率影响很大,因此由系统自动检测并交给缺省的异常处理程序,即用户不用处理。

异常捕获和处理:

第一:使用try.....catch语句,catch可以有多个,用来匹配多个异常
               
说明:Try代码段包含可能要产生例外的代码
           Catch代码段声明其能处理的一种特定类型的异常并提供处理的方法
           Finally代码段无论是否发生异常都会执行  
           当异常发生时,程序会中止当前的流程,根据获取异常的类型去执行相应的Catch段 
当捕获到异常时候:
                  
没有捕获到异常时候:
            
第二:对于处理不了的异常或者转型的异常,在方法的声明处通过throws语句抛出
           
说明:程序开始后,先调用method2()方法,然后抛给method1(),最后抛给readFile(),由它来处理。
第三:自定义异常
                   
说明:自定义异常我的理解是如果认为某个地方可能有错误,将这个错误用自己的语言组织起来,然后抛出。

异常处理原则:

        1、能处理就早处理,抛出不去还不能处理的就想法消化掉或者转换为RuntimeException处理。因为对于一个应用系统来说,抛出大量异常是有问题的,应该从程序开发角度尽可能的控制异常发生的可能。     
        2、对于检查异常,如果不能行之有效的处理,还不如转换为RuntimeException抛出。这样也让上层的代码有选择的余地――可处理也可不处理。     
        3、对于一个应用系统来说,应该有自己的一套异常处理框架,这样当异常发生时,也能得到统一的处理风格,将优雅的异常信息反馈给用户。

总结:

      1、异常是程序运行过程过程出现的错误,在Java中用类来描述,用对象来表示具体的异常。Java将其区分为Error与Exception,Error是程序无力处理的错误,Exception是程序可以处理的错误。异常处理是为了程序的健壮性。 
      2、Java异常类来自于Java API定义和用户扩展。通过继承Java API异常类可以实现异常的转译。     
      3、异常能处理就处理,不能处理就抛出,最终没有处理的异常JVM会进行处理。     
      4、异常可以传播,也可以相互转译,但应该根据需要选择合理的异常转译的方向。     
      5、对于一个应用系统,设计一套良好的异常处理体系很重要。这一点在系统设计的时候就应该考虑到。


关于J2SE的总结结束了。以下是我在学习J2SE时的一系列总结。
         Java内存简单分析
         Java异常处理
          Java常用类
          Java容器
          Java流
          Java之GUI编程(一)

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值