Java 编程语言是一种计算机 高级编程语言,有着独到的竞争 优势。本论文简要介绍了Java 异 常处理的概念、异常处理机制的 发展过程、原理以及Java 与c++ 异常处理的区别与联系。 【关键词】 Java 异常 面向对象 1 引言 Java 程序设计语言,是一种在计算机中 应用十分广泛的编程语言。Java 语言提高了计 算机的运行效率,使我们的生活更加便捷。在 设计Java 语言的时候,是有相应的异常处理 的框架方案的。但是在Java 编程中仍然没有 统一的异常处理的技巧和方法。因此人们十分 关注Java 编程中的异常处理问题。但是大多 数人却没有真正掌握正确处理异常情况的方法 和技巧。如何正确处理JAVA 异常处理、提高 计算机的应用程序,是我们目前一个需要迫切 解决的问题。 2 JAVA编程中异常检查 2.1 异常处理的概念 在C 语言里,我们可以使用if 语句来判 断是否出现了异常。而且调用函数通过被调用 函数的返回值感知在被调用函数中产生的异常 事件并进行处理。 Java 能够通过异常对象调用方法来处理 异常,而且是一种面向对象的程序设计语言。 Java 程序在运行的时候,会自动产生异常处理 对象,而且对于不同的异常,所产生的异常对 象也是不一样的。JVM 会根据不同的对象, 去执行不一样的异常处理代码。 所谓抛出(throw) 一个异常, 就是指 生成一个异常对象,并且把它提交给JVM。 JVM 从生成异常的方法开始进行回溯,在方 法的调用栈中开始查找,直到找到包含相应异 常处理的方法为止。通常我们把这个过程称为 捕获一个异常(catch)。 2.2 异常处理机制的发展过程 处理异常的传统方式是:在函数在执行 的过程中调用了某些其他函数,如果被调用的 函数返回值不是常规值,那么就可以据此判断 发生了某种异常。比如C 语言这种早期的编 程语言,没有异常处理机制,所以通常只能是 遇到错误之后就设定一个标志或者返回一个比 较特殊的值。这种处理异常的传统方式有很多 弊端,比如: (1)如果在每一次编程的过程中,调用 方法时都进行细致、全面的异常检查的话,代 码的可读性就会下降。在创建比较复杂、大型 或者易于维护的程序时,按照这种方式控制变 得非常困难。 (2)程序员会对这种机制变得麻木。许 多程序员就会这样想:异常的情况绝对不会在 我完成的代码中实现的,因为我的系统很好、 计算机很稳定而且思维很清晰。可能是因为程 序员的思维完全集中在程序功能的实现上而忘 记处理这种情况,也可能是程序员认为出现某 种异常的概率很小,又或者是因为程序刚好能 够正常编译,那么程序一般情况下是不会出现 问题的。但是这并不能保证程序员所设计的程 序是健全的。这些程序发生错误的话,程序员 往往并不能快速准确地定位和改正错误。在大 部分情况下,程序员会觉得程序发生异常不太 可能,就不会去检验。 2.3 Java异常处理机制的原理 Java 中的“异常处理机制”就是通过两 个完全不相同的出口来分离方法本身的职能以 及处理异常事件的职能。若要处理异常的问题, 作为程序员应用非常灵活而且容易的方式是完 全可以的。通过面向对象的方法进行异常处理, 把各种不同的异常情况进行分类,并提供了良 好的接口。这样的机制能够为不简单的程序供 应十分强大的控制方式。一般情况下,其它的 高级语言是令函数的使用者去注意这个函数会 出现的各种异常的情况,但Java 则是把大概 会产生的异常情况交给方法( 和函数对应的概 念,在Java 中称为方法) 的设计者进行。 Java 中有很多的“异常类”,它相对于 本身具体服务的方法是独立的,把这些方法统 一组织起来便形成了一个“类树”。比方说, “异常处理机制”就好比是学校后勤的社会化, 它将学校教学的职能以及学校后勤的保障功能 分离开,另外后勤集团的组织形式又独立于学 校这个主体。以此为证,我们可以知道,如此 组织方式既使服务的质量有了提高,而且服务 的效率也迅速上升。 3 Java与c++异常处理的对比 3.1 Java与c++异常处理的联系 Java 的异常处理与C++ 的异常处理十分 类似,是通过C++ 的异常处理演变而来。 3.2 Java与c++异常处理的区别 C++ 与Java 的异常处理模型具有许多不 相同的地方,最大的不同体现在Java 在异常 处理模型中引入了语法“try-finally”。“tryfinally” 语法主要是用于清理非内存性质的资 源(垃圾回收机制无法清理的资源),诸如 Socket 关闭、文件流的关闭以及数据库的连接 等等。 (1)在Java 语言中,所有的异常都要严 格对应一个异常处理模块。即如果程序throw (捕获)一个异常,那么程序中就必须catch (处理)这个异常。但是有两个异常是特殊 的,即RuntimeException 和Error 这两种异常 (以及它们的子类异常)。其中Error 异常 表示Java 程序出现了非常严重的错误异常; RuntimeException 异常表示Java 程序出现了运 行时的异常。 (2)Java 比C++ 更为严格,C++ 中许多 逻辑或者代码编译为warning,但是放在Java 中就会被强制转换成error。 (3) 与C++ 不同,Java 程序中所有的 异常都是从Throwable 中继承而来的。因此, Java 程序中的catch(Throwablee) 完全提到了 C++ 程序中的catch(…)。同时Java 程序可以 抛出任意类型的异常。如果一个函数在运行时 向上层函数抛出异常,那么它必须在该函数的 声明中注明。 4 总结 Java 编程语言是一种计算机高级编程语 言,有着独到的竞争优势。本论文简要介绍了 Java 异常处理的概念、异常处理机制的发展过 程、原理以及Java 与c++ 异常处理的区别与 联系。 参考文献 [1] 王立鹏浅析JAVA 编程中异常处理的方法 与技巧[J]. 信息技术,2012,23:320. [2] 蓝雯飞基于Java 的异常处理技术[J]. 计 算机系统应用,2006(07):67-70. [3] 高德龙.Java 程序设计中异常处理技术浅 析[J]. 电脑知识与技术,2009(11). [4] 顾庆传, 孔浩, 谢树云.Java 异常处理的 分析与研究[J] 科技信息,2010(18). 作者单位 天津国土资源和房屋职业学院 天津市 300270 |