Java基础-异常处理

来源:互联网 发布:生日祝福html源码 编辑:程序博客网 时间:2024/05/19 16:22

概念

        “程序运行时,经常会出现一些非正常的现象,如死循环、非正常退出等,称为运行错误。根据错误性质将运行错误分为两类:错误(Error)和异常(Exception)”

        Error一般由系统进行处理,程序本身无需捕捉和处理,只能通过提示Error信息检查、改正程序。

       Exception(除数为0或操作数超出数据范围等)是在程序运行(而非编译)期间可能出现的现象,通过在程序中加入异常处理代码,使得产生异常时可执行该代码段调整程序运行方向,此过程称为异常处理。

       我们总希望错误被发现、处理的越早越好,但有的错误只有在运行时才会发生,因此需要在程序中加入捕获、处理异常的代码,使得系统健壮性有所体现。

 

分类

        Java语言采用面向对象的机制来处理异常。类之间结构为:

    

        所有的异常类均继承自Throwable类,Throwable类继承自Object类,可见Java对异常控制是非常重视的。Throwable封装了异常类所应具备的基本方法:

                 getMessage()返回异常的具体描述信息

                 getStackTrace()返回异常的堆栈信息

                 printStackTrace()打印异常的堆栈信息。

        Error:系统内部错误

        Exception:可以处理的异常

        RuntimeException:不必try...Catch

                 其他非运行异常子类:必须catchExceptionAPI帮助中方法后面Throws的异常类)

处理

        一般说来,系统捕获抛出的异常并输出相应的信息,同时终止程序运行,导致其后程序无法运行。我们需要让程序接收和处理异常对象,从而不影响其他语句的执行,使程序更加严谨,防止数据库结构泄。这些就是捕获异常的意义所在。

 

        使用try-catch-finally语句捕获和处理异常:try语句块将有可能抛出一个或多个异常对象的方法包含起来,出现异常时进行捕获;catch语句可以有多个,分别处理不同类的对象,当出现异常时,Java运行时系统将从上往下依次查看catch语句处理类型是否与抛出类型一致,进而执行catch语句块内容,因此在捕获异常时,异常类之间存在继承关系,则应将子类的catch语句块放置到父类的catch语句块之前;无论try语句块的内容是否抛出异常,finally语句块内容始终都会得到执行,因此finally语句块通常进行资源清理工作(关闭打开文件、删除临时文件等)。

        使用throw语句可以在程序中主动抛出异常。


        使用throws关键字在方法声明中表示该方法将抛出异常,格式如下:

                 [<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]

                 一个方法抛出异常后,系统将异常向上传播,由调用他的方法来处理这些异常或继续向上传播。


        自定义异常类,Java可通过创建Exception的子类来创建异常类,创建自定义异常类可考虑以下几点:

                  1.Java异常类体系中不包含所需要的异常类型。 

                  2.用户需要将自己所提供类的异常与其他人提供的异常进行区分。 

                  3.类中将多次抛出这种类型的异常。 

                 4.如果使用其它程序包中定义的异常类,将影响程序包的独立性与自包含性。


比较.NET异常处理

       Java.NET在异常处理的本质上是没有区别的,但在其语法表现上仍然需要区分:在.NET中没有throws语句,无需在声明方法时标出异常。

        .NET中的异常分为两类:

                 1.程序执行所发生的异常,派生于ApplicationException

                 2.公共运行库引发的异常,派生于SystemException

         这里异常处理机制同样也很简单,对可能出现异常的部分进行捕捉、处理,如果不能在当前处理,可通过throw抛出异常,交由调用者进行处理。


总结

       异常处理是在今后工作中不可或缺的一项技能,在这里不能一一的分析每个异常类出现的处理方式,只能在具体问题中具体处理,而API帮助文档,是我们不可或缺的工具,相信随着经验的不断积累,对异常问题的处理也会变得越来越灵活,程序实现也更加健壮。


1 0
原创粉丝点击