欢迎来到天天文库
浏览记录
ID:17422295
大小:41.50 KB
页数:3页
时间:2018-08-31
《基于java语言的异常处理机制的研究》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于Java语言的异常处理机制的研究摘要:Java是一种面向对象的程序设计语言,其异常处理机制是Java语言的一大特色。本文讨论了Java的异常处理机制,并指出了异常处理机制使用中的常见错误模式及注意事项,以便更好的利用Java解决实际问题。关键字:Java;异常;异常处理机制;错误模式引言:异常是一个运行时错误。在不支持异常处理的计算机语言中,错误必须被手工检查和处理——典型的是通过错误代码的运用等等,这种方法既笨重又麻烦。Java的异常处理机制避免了这些问题,采用面向对象的方法来管理运行时错误。1、异常处理思想的由来异常即程序运行时出现的非正常情况。在程序的运行过程中随时都有可能发生错误
2、的可能。这些错误可能是由于包含不合法的输入数据所造成的,或者是数组越界存取,还可能是因为试图使用空引用来引用对象。当这些错误发生时,通常希望程序能够智能化地处理,而不会导致系统的崩溃或数据的丢失。错误处理的终极任务就是将错误从发生地传递到能够处理它的地方。导致产生错误传统的非面向对象的编程语言程序员负担过重出错处理不规范由程序员考虑并自行处理图1、传统的错误处理方式在传统的非面向对象的编程语言中,错误处理的任务全落在程序员身上,这样做有两个去缺点,一是程序员的负担过重,二是出错处理不规范,不利于程序员之间的协作沟通,而且降低了程序的可读性。在Java中使用异常为程序提供了一种有效的错误处理方
3、式,使得方法的异常中止和错误处理有了一个清晰的接口:当一个方法引发一个异常之后,可以将异常抛出,由该方法的直接或间接调用者处理这个异常。这就是常说的catch-throw (捕获-抛出)方式。这种处理方式使得错误的处理规范化,程序员可以用一致的方式来处理错误。2、Java的异常处理机制Java异常处理机制基于三中操作:声明异常、抛出异常和捕获异常。具体见图2。抛出异常声明异常捕获异常寻找异常处理器异常发生,则创建异常对象并传递给系统方法说明它可能遇到的异常类型图2、异常处理机制的操作流程声明异常告诉编译程序哪里可能出错。当一个语句引起错误时,含有这个语句的方法就会创建一个异常对象并将它传递给
4、系统。异常对象包含有关异常的信息,包括它的类型和出错时程序的状态。一个方法抛出异常后,Java运行系统开始寻找用来处理错误的代码。处理错误的代码称为异常处理器,从当前的方法开始,通过方法调用链向后搜索,查找这一代码。处理器必须与抛出的异常类型相匹配,如果未发现异常处理器,程序就会中止。任何不是被你程序捕获的异常最终都会被系统提供的默认处理程序处理。默认处理程序显示一个描述异常的字符串,打印异常发生处的堆栈轨迹并且终止程序。3、Java异常处理机制的规则具体而言Java的异常处理通过5个关键字控制:try、catch、throw、throws和finally。想要进行异常监控的代码被包含在一个
5、try块中。如果在“try”块中发生异常,它被抛出。程序代码可以捕捉这个异常(用catch)并且用某种合理的方法处理该异常。系统产生的异常在Java运行时被系统自动引发。手动引发一个异常,用关键字throw。任何被引发方法的异常都必须通过throws子句定义。任何在方法返回前绝对被执行的代码都被放置在finally块中。下面是一个异常处理的通常形式:try{//blockofcodetomonitorforerrors}catch(ExceptionType1ex0b){//exceptionhandlerforExceptionType1}catch(ExceptionType2ex0b)
6、{//exceptionhandlerforExceptionType2}//…finally{//blockofcodetobeexecutedbeforetryblockends}这里,ExceptionType是发生异常的类型。声明抛出异常:在Java中程序可以用throw语句引发明确的异常。Throw语句的通常形式为:“throwThrowableInstance;”。在方法中声明异常:在throws子句中,可以声明方法中可能出现的异常从而告诉编译器它可能会产生哪些异常,从而要求用户必须考虑对这些异常的处理。一旦异常被抛出,程序控制由try块转到catch块。执行永远不会从catch
7、块“返回”到try块。一旦执行了try和它的catch语句,程序控制从整个try/catch机制的下面一行继续。不能单独使用try,catch子句的目的是解决异常情况并且像错误没有发生一样继续运行。无论在try块中是否产生异常,也不管产生的异常是否会被捕获,finally中的语句最终会被执行。另外要指出一点的是,finally子句是可选的,可以有也可以无。每一个try语句至少需要一个catch或finally
此文档下载收益归作者所有