您好,欢迎访问三七文档
习题七参考答案7.1什么是异常?为何需要异常处理?答:在程序运行时打断正常程序流程的任何不正常的情况称为错误(Error)或异常(Exception)。在程序设计时,若对程序运行可能出现的错误或异常不进行处理,程序运行发生错误时程序将终止运行,这种处理方法的优点是程序设计比较简单。但是,对程序错误一概地采用终止运行办法,显然过于简单化,因为有些情况下,完全可以通过其他途径保持程序继续运行。比如,由于文件名不符合要求而无法打开文件,那么,可以提示用户输入一个新的文件名,从而使程序继续往下运行。在程序中使用了异常处理,就可以在解决问题之后使程序继续运行,提高了应用程序的健壮性和容错能力。7.2列举5种常见的异常。答:被零除、数组下标越界、引用空对象、文件不能打开、数据格式错误。7.3Java中的异常处理主要处理哪些类型的异常?Java处理的异常分为3种:Error类、RunTimeException类和其它Exception类。Error类错误与程序本身基本无关,通常由系统进行处理。RuntimeException类异常主要是程序设计或实现问题,可以通过调试程序尽量避免而不是去捕获。有些异常在程序编写时无法预料,如中断异常、文件没有找到异常、无效的URL异常等,是除RunTimeException类异常的其它Exception异常(非运行时异常)。在正常条件下这些异常是不会发生的,什么时候发生也是不可预知的。为了保证程序的健壮性,Java要求必须对可能出现的这类异常进行捕获并处理。7.4如果在try程序块中没有发生异常,那么当该程序块执行完后,程序继续执行什么地方的语句?答:如果一个try程序块中没有发生任何异常,那么就跳过该块的异常处理程序,继续执行最后一个catch块之后的代码。如果有finally程序块的话,就执行finally程序块及其后的语句。7.5如果在try程序块中发生了异常,但找不到与之匹配的异常处理程序,会发生什么情况?答:如果在try程序块中发生了异常,但找不到与之匹配的异常处理程序,可能会发生2种情况。一种是程序终止运行,一种是把异常向上移交给调用包含该try程序块方法的方法来处理。7.6在try程序块中发生了异常,其后如果有多个catch参数类与之匹配,会执行那个catch块中的异常处理程序。答:当try语句块中的代码执行时发生异常,程序的正常运行便中断,并抛出异常对象,然后在try块后面的各个catch()中查找与异常对象相匹配的异常类,当找到第一个与之相匹配的参数类时,就执行包含这一参数类的catch语句块中的代码。7.7什么情况下要使用finally程序块?答:finally子句为异常处理提供一个统一的出口,使得在控制流转到其它部分以前(即使有return,break语句),能够对程序的状态作统一的管理。finally程序块中通常都包含一些用于资源释放的代码块。例如,在finally程序块中应将try程序块中打开的所有文件关闭。7.8假设下列try-catch语句块中的第2个语句s2产生一个异常,试回答下述问题:答:若try-catch语句块中的第2个语句s2产生一个异常,⑴语句s3不会执行,⑵如果catch捕获到异常,异常处理后,会继续执行语句s4,⑶如果异常未被捕获,则程序终止运行,语句s4也不会执行。7.9发生一个异常一定会导致程序终止吗?答:发生一个异常不一定会导致程序终止运行。若程序中没有异常处理,发生一个异常一定会导致程序终止运行。若程序中有异常处理,发生一个异常并被捕获,则异常处理后,程序会继续运行。7.10分析下面程序的执行流程并写出输出结果。答:程序运行时,main()方法调用action()方法,action()方法中抛出一个MyException类异常,但没有捕获及处理,而是向上移交给main()方法,在main()方法捕获并处理。程序执行的输出结果是:MyException7.11设计并实现一个程序。新建一个异常类StringTooLongException,当发现字符串长度太长时抛出该异常。在程序的main方法中循环输入字符串,直到输入“DONE”为止。如果输入的字符串长度超过20个字符,则抛出异常。考虑两种异常处理方式:⑴抛出异常终止程序;⑵捕获并处理异常,输出适当的提示信息并继续输入字符串。下面的程序按第2种方式处理。importjava.util.Scanner;publicclassXt6_11_DefineException{publicstaticvoidmain(String[]args){Stringstr=;Scannerscan=newScanner(System.in);StringTooLongExceptionproblem=newStringTooLongException();do{System.out.print(输入一个字符串:);try{str=scan.next();if(str.length()20)throwproblem;//抛出自定义异常}catch(StringTooLongExceptione){System.out.println(e.toString());}}while(!str.equals(DONE));System.out.println(主方法结束.);}}//自定义一个异常类,类名为:StringTooLongExceptionclassStringTooLongExceptionextendsException{StringTooLongException(){super(字符串长度太长!);}}
本文标题:第7章习题参考答案
链接地址:https://www.777doc.com/doc-2111644 .html