基于Java语言中异常的深入探析

2014-07-24 18:59钱明珠汪小宝
电脑知识与技术 2014年15期
关键词:异常

钱明珠++汪小宝

摘要:Java语言是一种易学易用的网络设计语言,它有简单易学、面向对象、动态性、解释执行性、多线程性、安全性和健壮性等特点。在众多的特点中,笔者重点研究Java的健壮性。如何增强程序的健壮性?相当其它语言来说,Java语言摒弃了指针的概念,更新了很多语言的不足,同时引进了异常处理的机制,让Java编写出来的程序具有更强的处理和执行能力,使程序更加健壮。

关键词:异常;异常处理机制;异常分类;健壮性

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)15-3520-02

Abstract: Java language is a language easy to learn web design, it has easy to learn, object-oriented, dynamic, interpreted, multi-threaded, security and robustness characteristics. Among the many features, the author focuses on Java's robustness. How to enhance the robustness of the program? It is quite another language, Java language to abandon the concept of pointers, updating a lot less than the language, while the introduction of a mechanism for exception handling, let out a program written in Java has more processing and execution capabilities to make the program more robust.

Key words: exception; exception handling mechanism; abnormal classification; robustness

随着计算机行业不断发展,各类计算机语言的功能都比之前更加强大和完善,学生学起来也更加容易。但是,大多数语言都存在一些漏洞,众所周知,捕获漏洞最理想的时机是在编译期间,即程序在运行之前找到错误并解决。然而在实际的程序设计过程中,并不是所有的错误都能在编译期间被检测发现。虽然其它语言也提供了异常处理机制,但Java提供了一种更加灵活和简便的异常处理机制。

1 Java语言中异常的概念

异常的解释有很多种,如郑阿奇编写的《Java实用教程》是这样诠释的。异常就是以对象的方式表示的一个或一类错误,该异常对象不仅封装了错误的信息,还包含了错误发生时的“上下文”信息[1]。还有张兴科编写的《Java程序设计项目教程》中异常定义是在程序执行过程中,能够使程序正常运行中断的条件称之为异常[2]。还有很其它的解释笔者就不一一介绍。异常简单来说就是在程序执行期间,为了规避一些意外事件的发生,而编写一些额外的代码来处理它们,使程序能继续运行下去,而不至于程序中断,使整个运行瘫痪,Java把这些意外的事件称之为异常。

2 Java语言中异常的处理机制

一般来说,Java程序在运行中如果发生异常,不进行捕获,程序就会终止运行。Java提供了一套非常灵活和简单的异常处理机制,由try-catch-finall结构来处理。

1) try语句块

捕获异常的第一步是用try{…}选定捕获异常的范围,由try所限定的代码块中的语句在执行过程中可能会生成异常对象并抛弃。它后面的catch语句块要分别对这些异常做相应的处理。try语句块后通常跟0个或多个catch语句块,还可以至多一个的finally语句块。

2) catch语句块

每个catch语句块声明其能处理的一种特定类型的异常并提供处理的方法。当异常发生时,程序会中止当前的流程,根据获取异常的类型去执行相应的catch语句块。在catch中声明的异常对象(catch(Exception e))封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法来获取这些信息。当多个catch语句块存在时,子类异常对象要放在父异常对象之前.如

catch(subException1 e1){ }

catch(subException2 e2){ }

catch(Exception1 e3){ }

3) finally语句块

捕获例外的最后一步是通过finally语句为例外处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。

3 Java语言中异常的分类

Java语言把异常分为两类:必须检测异常(checked exceptions)和非检测异常(unchecked exceptions)。很多学习异常的同学,总喜欢把这两种异常混淆不清。所谓 必须检测异常就是在编译程序时,某句代码编译无法通过,只有对它做异常处理,才能通过编译器的编译,这种异常就是必须检测异常。而非检测异常则是程序在编译时不会报告错误,但程序可能存在潜在风险。为了让学生更好的认识和掌握这两类异常,笔者将进一步解释。

3.1 必须检测异常

当声明一个方法抛出异常时,该方法可能会抛出声明的那些异常,从而在程序中对这些异常加以注意和处理,如果直接对整个方法进行异常处理。如

type method_name(parameter_list)throws exception_list{

//方法体

}

当该方法被调用时就会产生编译时错误,此时产生的就是检测性异常。

3.2 非检测异常

如果不是直接对整个方法进行异常处理,而是使用try-catch-finall结构来处理。如

type method_name(parameter_list) {

try{

方法体

} catch(subException1 e1){ }

catch(subException2 e2){ }

catch(Exception1 e3){ }

}

当该方法被调用时就不会产生编译时错误,此时产生的就是非检测性异常。

3.3 两种异常的转换

现在以对三角形合法性判断为例,定义异常和实现检测性和非检测性的互换操作。

首先自定义定义三角形异常类

然后应用该类定义一个判断合法三角形的方法,并抛出异常对象时,当在主方法中调用该方法时就出现了编译时错误。这就是检测性异常的产生。

如果做下面改动,结果就会变成非检测性异常。

从上面例子可以直观了解这两种异常的区别和实现过程,因此在做程序时,完全可以由设计者根据具体的需要,来控制异常的类型。使编程变得更加灵活,方便。

4 小结

作为程序设计者来说,不光是能设计出用户需要的功能,同时也有让设计的程序更加的健壮,异常的学习可以让程序设计者在这方面做到游刃有余。

参考文献:

[1] 郑阿奇. Java实用教程[M].2版.北京:电子工业出版社, 2013:126-133.

[2] 张兴科.Java程序设计项目教程[M].北京:中国人民大学出版社, 2010:97-102.

[3] 魏先民.Java程序设计实例教程[M].北京:中国水利电力出版社, 2009:143-147.endprint

猜你喜欢
异常
煤矿提升机安全状态异常概述
浅谈高中化学实验不寻常的成因和利用
发电机负序电流异常增大的原因分析
电力计量装置异常的监测方法及处理对策
嵌入式系统课程“中断、异常与事件”教学实践及启示
探讨糖尿病合并促甲状腺激素、甲状腺激素异常患者的临床诊断治疗
关于气相色谱分析氢气异常的解决方案
“异常”动力
心电异常自动检测的研究
核电厂安全壳泄漏率异常高分析与处理