Java异常处理技术及应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浅谈Java异常处理技术及应用
摘要:随着系统规模的不断扩大,传统的异常处理技术已经成为创建大型可维护程序的障碍了。

java是一种面向对象的程序设计语言,java的异常处理非常出色。

java把异常封装到类里,运用“try/catch/finally”异常处理机制,最终得到的是更为“健壮”的异常处理代码。

关键字:异常处理 java应用
一、前言
异常是在程序运行过程中发生的非正常事件。

比如:除零溢出、数组越界、内存溢出等。

这些事件的发生将阻止程序的正常运行。

为了加强程序的健壮性,程序设计时,必须考虑到可能发生的异常事件并做相应的处理。

传统的错误处理方法一般以判断返回值的方式处理错误,使得正常程序代码和错误代码混合在一起,给程序维护带来很大的障碍。

java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,据有良好的层次性。

这种异常处理机制能将处理错误异常的代码和“常规”代码分开,使程序维护起来更加方便,同时也增强了程序的安全性和健壮性。

和java语言的其它特性相比,异常处理显得深奥且不易掌握。

因为它和java运行时系统密切相关,本文着重就java语言的异常处理机制及在程序设计中的应用作一个初步的探讨。

二、异常类的结构及组成
java中的throwable(抛出)类是一个专门处理异常的类。

它派生了两个子类:error(出错)类和exception(异常)类。

error 类对象是由java虚拟机生成并抛出给系统。

通常,java 程序不对错误进行处理;exception 类对象是java程序抛出和处理的对象。

它又分为runtimeexception(运行期间异常)、awt ex-ception(awt 异常)和io exception(输入输出异常),这三种子类分别对应于不同类型的异常。

另外,用户根据需要可以自己定义异常类。

三、异常的处理
1、处理机制
java 中使用异常类及其子类对程序出现的各种异常事件给出
了一个统一的、简单的抛出错误和处理错误的机制,可以概括为以下几个过程:
(1)在java程序的执行过程中,如果出现了一个可识别的的错误,则会生成一个与该错误相对应的异常类对象,该对象将被提交给运行时的系统,这个过程称为抛出(throw)异常。

(2)当java运行时系统接收到该异常对象后,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这个过程称为捕捉(catch)异常。

(3)如果java运行时系统找不到处理异常的程序,那么它将终止程序的执行,最后调用缺省异常处理程序来处理异常。

2、两种处理办法
(1)try 语句:用来抛出并处理一个或多个异常,包括try 块,catch 块和 finally 块。

形式如下:
try
{ //可能产生异常的代码}
catch (exceptiontype1 exceptioninstance 1)
{ //捕获并处理 exceptiontype1 对象}
catch (exceptiontype2 exceptioninstance 2)
{ //捕获并处理 exceptiontype2 对象}
……
catch (exceptiontypen exceptioninstance n)
{ //捕获并处理 exceptiontypen 对象}
finally
{ //执行清除工作(如关闭文件,关闭连接等)的语句}
处理语句解释:
在java程序中,应把可能产生异常的语句封装在try块中,用以捕获可能发生的异常。

如果try块在执行过程中引发了异常,当运行时系统接受到异常后,就会根据异常的类型搜索匹配的异常处理程序(catch块)- - - - 一个try语句允许有多个catch块,分别用于处理不同类型的异常。

搜索以自上而下的方式依次对每个
catch块处理的异常类型进行检测,直到找到类型相匹配的catch 块,并把异常传递给该处理程序,异常就被捕获了,执行流程转向该catch块。

当执行完该catch块,将跳过所有剩余的catch块,执行finally块,把方法中所有清除状态和关闭系统文件的语句放在一起,以避免代码的重复,减少出现遗漏语句的现象。

如果try 块在执行过程中没有引发异常,那么程序流程执行完try块后,将跳过所有的catch块,直接执行finally块。

(2)throws语句
在某些情况下,方法还暂时不能确定如何处理异常,它可以将异常进一步向上层抛出将异常处理的任务留给调用它的方法。

在java中,在方法的头部使用throws子句指定方法向上抛出异常。

四、结束语
java是一种面向对象的程序设计语言,java的异常处理机制非常出色。

java中的所有异常都是从基础类throwable 里继承而来的,所以可确保我们得到的是一个通用接口。

丢弃一个错误的异常后,不是象c++那样在运行期间调用一个函数,java异常规范是在编译期间检查并执行的。

被取代的方法必须遵守那一方法的基础类的异常规范,它们可丢弃指定的异常或者从那些异常衍生出来的其他异常。

这样一来,运用try/catch/finally异常处理机制,最终得到的是更为“健壮”的异常控制代码。

参考文献:
[1](美)joshua bloch 著,潘爱民, effective java 中文版[m],机械工业出版社,2003.1
[2]宋波,董晓梅.java 应用设计[m].北京:人民邮电出版社,2002.8.。

相关文档
最新文档