java 语言中的异常处理new

java 语言中的异常处理new

ID:34401735

大小:316.82 KB

页数:16页

时间:2019-03-05

java 语言中的异常处理new_第1页
java 语言中的异常处理new_第2页
java 语言中的异常处理new_第3页
java 语言中的异常处理new_第4页
java 语言中的异常处理new_第5页
资源描述:

《java 语言中的异常处理new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、DEVJAVA语言的异常处理产品研发部金松5/10/20011DEV目录1.异常处理技术概述..................................11.1引言11.2Java的异常处理机制21.3Java异常的层次结构21.4背后的模式32.异常处理的设计原则...............................32.1学会定义分层次的异常。32.2正确定义方法抛出的异常52.3确保释放资源62.4每个线程要捕获所有异常和错误63.程序中

2、常见的几类异常的处理................73.1Error的处理73.2RuntimeException异常的处理73.3类型转换的异常处理73.4多线程相关的异常的处理83.5文件操作异常的处理103.6JDBC的异常的处理103.7CORBA的异常处理111DEV1.异常处理技术概述1.1引言编写无错的程序是每个程序员的最大愿望。一般而言,对错误的处理技术的要求大致有这三条:1.要能准确有效的检测出所有错误。2.要能对检测出的所有错误加以处理。3.对错误情况要尽量修复,

3、让程序尽可能的执行下去。在正规的异常情况处理方法发展起来之前,程序员借助各种方法来处理错误情况,这些方法大多不能满足错误处理的要求,或使用复杂,容易出错。下面就是这些方法中最常用的:①终止整个程序。这是C语言中ASSERT宏所使用的技术。当错误恢复已是不可能,很困难,很危险,不可靠时,终止程序可被认为是最后手段。但有时这种异常处理方法比异常本身更为糟糕。试想一个核反应堆控制程序因为除零错误,而终止程序,放弃控制,会导致什么样的后果。②检测异常的函数返回一个状态值,来通知调用函数某个地方已发生错误。或用一个全程变

4、量来保存错误码。这种技术使用得非常普遍,如在C的stdio运行库中就用errno保持错误码。这种技术的问题在于虽然它在检测错误方面很有效,但不能保证错误的处理和恢复。这就要依赖于调用函数来检查返回值或错误变量。这种技术处理异常通常分为两个阶段:低级别代码检测错误,高级别代码处理错误。很难保证所有低级别代码检测出的错误在高级别代码处都得到处理。比如很少有人在每次调用printf()时都检查errno的值。如果高级别代码对每次低级调用都进行检测,代码将变得很长。③建立一个错误处理回调函数,用以在异常发生时用低级别函

5、数调用。这种技术用在C++中处理动态内存分配失败。函数Set_new_handle()允许应用程序建立一个常规处理程序,当内存分配失败时由系统调用。这种技术常与方法②联用。这种技术可以对异常进行一定的恢复,但有两个问题:第一,不能保证用户一定会使用回调函数对异常进行处理。用户可能根本没有定义处理函数,这样错误得不到处理,而会延续下去导致其它错误。第二,回调函数对错误的恢复能力有限。不支持前向恢复和后向恢复,即不能转移到发生错误前或后的代码段去。④执行一条非局部的转移命令。C语言是使用setjmp()和longj

6、mp()来实现这一功能的。setjmp()保存当前的处理器状态,包括所有通用寄存器、段寄存器、状态寄存器,指令计数器的值。longjmp()恢复由setjmp()保存的处理器状态,即转移到由setjmp()标定的执行点。这种技术对异常的恢复能力较强,可以前向恢复和后向恢复,但也有两个问题:第一,longjmp类似goto语句,破坏程序的结构性。第二,堆的状态和其它资源状态无法恢复。在使用了非剥夺性资源的程序中,这个问题将是致命的。⑤发送一个信号。这种信号是一个同步中断,请求系统调用先前安装的信号处理程序。信号处

7、理程序类似方法③中的错误回调程序,但是其信号实现和有效性是与设备有关的,更象是操作系统的一个函数而不是编程语言。在C程序中,这是用signal()1DEV和raise()函数实现的。signal()函数用来将一个处理函数与一个信号联系起来。raise()发出信号,但它更多只是用来测试处理函数。TurboC支持以下几种信号:SIGABRT,由程序非正常终止引起;SIGFPE,由浮点运算出错引起;SIGILL,非法指令引起;SIGINT,按CTRL_C引起;SIGSEGV,非法存取引起;S

8、IGTERM,程序终止引起。BorlandC又增加了几种信号,由于未形成标准,这里不作介绍。1.2Java的异常处理机制新的异常处理机制是基于非局部转移的。由低级别代码检测出异常,抛出(throw)异常;高级别代码捕获(catch)异常,处理异常。异常在Java中被当做对象来处理,一条catch指令只能捕获一类异常。关键字try经常和关键字catch连用,在try块抛出的异常将被紧跟在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。