oracle认证的java考试(19)

所需积分/C币:9 2013-05-10 16:21:40 782KB PDF
1
收藏 收藏
举报

oracle认证的java考试(19)
arena 达内科技 3多个异常的处理规则: 定义多个 catch可精确地定位异常。如果为子类的异常定义了特殊的 catch 块,而父类的异常则放在另外一个 catch块中,此时,必须满足以下规则:子类 异常的处理块必须在父类异常处理块的前面,否则会发生编译错误。所以,越特 殊的异常越在前面处理,越普遍的异常越在后面处理。这类似于制订防火墙的规 则次序:较特殊的规则在前,较普通的规则在后 4.自行抛出异常 在程序中自行抛出异常使用 throw语句。 thrW语句抛出的不是异常类,前是一个异常实例,而且每次只能抛一个早常 实例。 throw语句的语法格式: throw EXceptionInstance; 方法是2步:创建异常,抛出异常(首先实例化一个是常对象然后用thow 抛出)合在一起就是- throw new| EXCeption(异常说明信息")。将创建异常 抛出异常合在一起的好处是:创娃异常时,会包含异常创建处的行信息,异常被 捕获时可以通过堆栈迹( stack Trace的形式报告这些信息。如果在同一行代码创 建和抛出异常,对丁程序的调试将非常有用。 所以, thow new XXx()已经成为一个标准的异常抛出范式。 在定义一个方法时,方法块中调用的方法可能会抛出异常,可用上面的 throw new XXX()处理,如果不处理,那么必须在方法定义时,用 thows声明这个方法 会抛出的异常。 对异常的处理,有一条行之有效的默认规则:向上抛出--被调用类在运行 过程中对遇到的异常一概不作处理,而是自接向上抛出,一自到最上层的调用类 调用类根据应用系统的需求和特定的异常处理规则进行处理,如向控制台输出异 常堆栈信息,打印在日志文件中。用一句形象的话米说,就是谁使用,谁(最上 层的调川类)处理 达内科技(中国)有限公司版权所有 arena 达内科技 执行流程 Question 173 Given the exhibit: 33. try 34.∥ some code here 35.3catch (NullPointerException e1 36. System. out. print("a") 37.]catch(RuntimeEXception e2)( 38. System. out. print("b") 39.] finally i 40. System. out. print(c); 41.} What is the result if NullPointerException occurs on line 34? A c B. a C. ab D. ac E. bc F. abc 考点: 异常的执行流程 考点说明 当程序中抛出一个异常后,程序从程序中导致异常的代码处跳出,jva虚拟 机检测寻找和ty关键字匹配的处理该异常的 catch块,如果找到,将控制权交 到 catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被 重新执行。如果没有找到处理该异常的 catch块,在所有的 finally块代码被执行 后,遇到异常的当前线程被中止。 fnay关键字保证无论程序使用任何方式离开ty块,mnay中的语句都会 被执行。在以下飞种情况下会进入fnay块 (1)ty热电的代码正常执行完毕。 (2)在ty块中抛出异常。 (3)(try块中执行 return、 break、 continue 因地,当你需要一个地方来执行在任何情况下都必须执行的代码时,就可以 将这些代码放入们ay块中。当你的程序中使用了外资源如数据库连接,文 件等,必须将释放这些资源的代码写入 final!y块屮。 本题详解: 在ine34处产生个 NullPointerEXception,代码会从产生异常的地方跳出, 然后找匹配Nu| Pointer EXception的 catch块,执行该 catch块中的代码,输出 a,执行完之后程序再进入fnay块,执行 finally块屮的代码,输出c AnswerD 达内科技(中国)有限公司版权所有 arena 达内科技 Question 174 Exhibit 1. public class a i 2. public void method 1(t 3.Bb≡newB() 4. b method2 0 567 //more code here 1. public class B i 2. public void method2(0 3. CC= new CO: 4. c method30; 5.//more code here 6 7 必 1. public classC i 2. public void method3(0 3./ /more code here Given the exhibit 25.ty{ 26. A a= new AO 27. amethod 10: 28. catch(EXception e ){ 29. System. out. print("an error occurred) 30. Which two statements are true if a nullpointer exception is thrown on line 3 of class C?(choose two) A. The application will crash b. the code on line 29 will be executed C. The code on line 5 of class a will execute D. the code on line 5 of class b will execute E. The exception will be propagated back to line 27 考点: 异常的传播 考点说明: 面向对象的应用程序运行时,经常会发生一系列方法调用,从而形成“方法 调用栈”,异常的传播则相反:只要异常没冇被完全捕获(包括异常没冇被捕获 或异常被处理后重新抛出了新异常),异常从发生异常的方法逐渐向外传播,首 先传给该方法的调用者,该方法调用者再次传给其调用者……直至最后传到 main方法,如果main方法依然没有处理该异常,JVM会中止该程序,并打印 达内科技(中国)有限公司版权所有 arena 达内科技 异常的跟踪栈信息。 本题详解: 本题中,C类的 method3方法中产生一个异常,向上传播给其调用者B类 的 method2方法,再传播给上层调用者A类的 method1方法。调用者a在调 用 method1时对异常进行了捕获,并且捕获异常的范围是 Exception,因此 catch 块中的代码,即line29,会得到执行 Answer.E 达内科技(中国)有限公司版权所有 arena 达内科技 Question 175 Given 31. /some code here 32. try( 33.//some code here 34) catch(Some EXception ser 35.∥ some code here 36.)finally i 37.∥ some code here 38 What is the result? Select all that apply A. The instance gets garbage collected B. The code on line 33 throws an exception C. The code on line 35 throws an exception. D. The code on line 31 throws an exception E. The code on line 33 executes successfully 必 考点: 异常执行流程 考点说明: 程序中抛出一个异常后,程序从程序中导致异常的代码处跳出,java虚拟 机检测寻找和my关键字匹配的处理该异常的cath块,如果找到,将控制权交 到atch块中的代码,然后继续往下执行程序,ty块中发生异常的代码不会被 重新执行。如果没有找到处理该异的 catch块,在所有的fna块代码被执行 和当前线程的所属的 ThreadGroup的 uncaughtEXception方法被调用后,遇到 异常的当前线程被中止。 本题详解: 题意是说什么情况会使每个地方的代码都能够得到执行。 Explanation: Only B can be true, C can not be true otherwise the code would not compile. Regarding to E it is not guarantee not to throw exception Answer B 达内科技(中国)有限公司版权所有 arena 达内科技 Question 176 Given. 84.t 85. Resource Connection con resourceFactory getConnectiono 86. Results r= con query(GET INFO FROM CUSTOMER"; 87. info = r getData(; 88. con. close( 89.]catch(Resource Exception re)i 90. errorLog write(re. getMessageo) 91.} 92. return info Which statement is true if a resource Exception is thrown on line 86? A. Line 92 will not execute B. The connection will not be retrieved in line 85 C. The resource connection will not be closed on line 88 D. The enclosing method will throw an exception to its caller 考点: 异常执行流程 考点说明: 当程序中抛出一个异常后,程序从程序中导致异常的代码处跳出,jva虚拟 机检测寻找和try关键字匹配的处理该异常的 catch块,如果找到,将控制权交 到 catch块中的代码,然后继续往下执行程序,ty块中发生异常的代码不会被 重新执行。如果没有找到处理该异常的 catch块,在所有的fna!y块代码被执行 和当前线程的所属的 ThreadGroup的 uncaughtEXception方法被调用后,遇到 异常的当前线程被中止。 本趑详解 本题在ine86处产生一个 Resource Exception,因此程序会在ine86处跳 出。B答案排除C答确。ne86处抛出的异常被匹配的cath块捕获,异 常在该cath块中得到相应的处理,处理之后程序继续执行,因此lne92的代码 会得到执行,A答案排除。由于该代码中所拋出的异常已被处理,因此该代码所 在的方法被|层调用者调用时不会抛出该异常。 Answer 达内科技(中国)有限公司版权所有 arena 达内科技 Question 177 Given. 31.∥ some code here 32. try t 33.∥/ some code here 34]catch(Some Exception se)[ 35.∥ some code here 36. 3 finally i 37.∥ some code here 38.} Under which three circumstances wil the code on line 37 be executed?(Choose three) A. The instance gets garbage collected B. The code on line 33 throws an exception C. The code on line 35 throws an exception D. The code on line 31 throws an exception 必 E. The code on line 33 executes successfully 本题考点: try↓ catch(}fina!y4的执行流程。 考点说明: fna|y关键字保证无论程序使用任何方式离开ty块,fnay中的语句都会 被执行。 本题详解: 本题问题是在哪三种情况,37行的代码会被执行。37行是fnay块中的 代码,也就是本题意为什么情况下, finally块屮的代码会被执行。 在 try/catch({ina这个异常处理流程中,无论try、 catch块中的代码是 否发牛异常,异常是否被捕获,nay中的语句都会被执行 Answer BCE 达内科技(中国)有限公司版权所有 arena 达内科技 Question 178 Given. 11. static void test( throws Runtime EXception i 12. try t 13. System. out. print( test ) 14. throw new Runtime Exception ( 16. catch(Exception ex)I System. out. print(exception); 1 18 public static void main(String[ args)i 19. try i test(; 1 20. catch(Runtime Exception ex I System. out. print(runtime): 1 21 System. out. print(end); What is the result? A. test end B. Compilation fails 必 C. test runtime end D. test exception end E. a Throwable is thrown by main at runtime 本题考点: 异常的执行流程 考点说明: try[ 1次;只可以出现一次 code 2. catch( Exception ex0—n次;可以出现多次,但要求异常由小到大或是平级的 Code 4: ex print stackTraceO ]finallyt 1/0-1次;如无 catch, finally必须出现一次 code 5: code 6 没有异常、要执行的代码有:12,356 代码2抛出常,被捕获:12456 代码3抛增异常,但捕获不了:1,2,3,5->屮让程序 本题详解 本题中,tes(方法的try里自行抛出了一个运行时异常并且被 catch到了 执行 catch中的输出语句,打印“ exception”,然后在主方法中调用test()方法, 此时test()方法中的异常已经被解决了,因此主方法调用时不会再抛出异常,程 序执行完ty旮语句块就跳出ty} catch结构继续执行下面的代码,输岀打印 end AnswerD 达内科技(中国)有限公司版权所有

...展开详情
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
super3949 资料不怎么样
2013-07-08
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享宗师

    成功上传21个资源即可获取
关注 私信
上传资源赚积分or赚钱
最新推荐