您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 实验02异常处理实验
一.本实验目的及要求1.掌握JAVA异常处理机制2.掌握直接抛出异常和间接抛出异常3.掌握自定义异常类4.实验报告内容应包括,本实验的第三、四、五部分的答案,以及第六部分的程序后要求。二.基础知识任何一门计算机程序设计语言都包括有绝对正确和相对正确的语句。绝对正确:指任何情况下,程序都会按照流程正确执行;相对正确:程序的运行受到运行环境的制约,在这种情况下,需要附加检测和控制语句,保证程序的健壮性。在Java中,通过面向对象的方法来处理程序错误,采用异常(Exception)处理机制来处理程序运行中的错误.将程序运行中的所有错误都看成一种异常,通过对语句块的检测,一个程序中所有的异常被收集起来放在程序的某一段中处理。如果发生了异常,则这个方法生成一个代表该异常的对象(包含了该异常的详细信息),并把它交给Runtime系统,Runtime系统寻找相应的代码来处理该异常。则生成异常对象并把它提交给运行时系统的过程被称为抛弃(throw)异常。运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回朔,直到找到包含相应异常处理的方法为止,这一个过程称为捕获(catch)一个异常。程序中存在非法操作.这种因为无意或粗心引起的错误称为隐式异常,常见的隐式异常可以通过java.lang包中的Throwable的子类Error来处理。程序员在程序中使用throw语言引起的异常.这种事先考虑的异常称为显式异常,可以通过java.lang包中的Throwable的子类Exception派生的子类生成.在Java语言中,大部分错误和异常都可以被抛出.异常情况被分为异常类Exception和错误类Error,其中错误类表示严重的错误,直接由Java系统处理.错误和异常分为3类:输入错误:主要指用户输入的数据格式,没有按规定的形式输入设备错误是不可预知的,且不可避免程序代码出错是因为程序设计和编写时候出现的考虑不全面引起的Java的异常处理是通过3个关键词来实现的:try-catch-finally。用try来执行一段程序,如果出现异常,系统抛出(throws)一个异常,可以通过它的类型来捕捉(catch)并处理它,或最后(finally)由缺省处理器来处理。Try{exception_method;}catch(Exception1e){dealWith1;}[catch(Exception2e){dealWIth2;}][finally{method;}]在异常对象抛出时,使用到两个关键字分别是:throws和throw,其中throw用于语句中抛出异常对象,例如:Exceptione=newException(“MyException”);throwe;或thrownewException(“MyException”);throws用于描述在间接抛出异常类型。publicvoidMyException(inta,intb)throwsException{}三.实验内容(1)填空练习1.在JAVA语言中采用面向对象方法处理错误,通常这些错误被称为(异常)。2.在JAVA语言,异常情况分为(异常类Exception)类和(错误类Error)类,引起2类情况发生的原因(输入错误)、(设备错误)和(程序代码出错)。3.在JAVA语言中,异常处理机制的用到的3个关键字是(try)、(catch)和(finally)。4.在JAVA语言中,异常抛出有2种方式,其中异常产生和异常捕获在同一个方法中称为(直接抛出异常),而异常产生和异常捕获在不同的方法中称为(间接抛出异常)。5.在JAVA语言中,throw的作用是(抛出异常对象),throws的作用是(描述在间接抛出异常类型)。6.自定义异常类,都需要要类定义是继承(Exception)类,并且在构造方法中调用(String)对象实现异常提示信息输入。(2)找出错误1.答:由于算数异常而导致程序错误,应继承Exception类,抛出异常并处理。2.答:try语句不能单独使用,其后应有finally子句或者catch子句。3.答:catch(Exceptione)放在了catch(ArithmeticExceptione)之前,导致后一个catch不能被正常执行。4.答:throwse错误,应改为throwe。5.答:是继承Exception类,而不是做接口。(3)程序填空1.读程序按照提示填空publicclassMyException{publicstaticvoidmain(String[]args){inta=10;intb=0;try{System.out.println(“a/b等于:“+(a/b));}catch(AirthmeticExceptione){//填写即将捕获的异常类System.err.println(e.getMessage());}}}2.publicclassMyException{publicstaticvoidmain(String[]args){inta=10;intb=0;(try){System.out.println(“a/b等于“+(a/b));}(catch)(Exceptione){System.err.println(e.getMessage());}(finally){System.out.println(“程序结束“);}}}3.publicclassMyException{publicstaticvoidmain(String[]args){inta=10;intb=0;try{if(b==0){Exceptione=newException(“除数b为0”);(throw)e;//直接抛出异常}System.out.println(“a/b等于“+(a/b));}catch(Exceptione){//填写即将捕获的异常类System.err.println(e.getMessage());}}}4.publicclassMyException{publicvoidcompute(inta,intb)(throws)Exception{if(b==0){Exceptione=newException(“除数b为0”);(throw)e;//间接抛出异常}System.out.println(“a/b等于“+(a/b));}publicvoiddealException(){inta=10;intb=0;try{(computer(a,b);)}catch(Exceptione){System.err.println(e.getMessage());}}}5.自定义异常类publicclassmyException(extendsException){//继承Exceptionpublic(myException)(Stringmsg){//构造方法(super.)(msg);//调用父类方法}}四.程序的分析和设计1.分别运行以下程序,看“运行结束!你能看到这句么?”是否能出现。运行结果截图,观察系统给出的异常提示信息。exp3_1:exp3_2:查出该程序出现的是什么异常?AirthmeticException:/byzero算数运算异常exp3_3:如果将代码段1和代码段2调换,将出现什么情况?2.参照以上做法,发现以下代码有哪几种异常exp3_3:数组下标越界异常exp3_4:数组下标越界,非法参数异常exp3_5:exp3_6:分析:进入try语句,当i=4时,发生数组下标越界,此时将会跳出try语句将进入catch语句进行异常处理,并输出异常信息,即当i=3时,出现异常。exp3_7:分析:因为try在循环体内时,所以从i=3起,所有异常信息都会输出。3.掌握直接抛出异常和间接抛出异常的区别exp3_8:exp3_9:4.用户自定义异常
本文标题:实验02异常处理实验
链接地址:https://www.777doc.com/doc-2499988 .html