随笔分类 -  emanual_谜题_异常谜题(36-45)

摘要:本谜题将测试你对递归的了解程度。下面的程序将做些什么呢? 要不是有try-finally语句,该程序的行为将非常明显:workHard方法递归地调用它自身,直到程序抛出StackOverflowError,在此刻它以这个未捕获的异常而终止。但是,try-finally语句把事情搞得复杂了。当它试图抛 阅读全文
posted @ 2018-10-23 23:43 尐鱼儿 阅读(123) 评论(0) 推荐(0) 编辑
摘要:请考虑下面的两个类: 如果你编译所有这三个类,然后在运行Strange1和Strange2之前删除Missing.class文件,你就会发现这两个程序的行为有所不同。其中一个抛出了一个未被捕获的NoClassDefFoundError异常,而另一个却打印出了Got it! 到底哪一个程序具有哪一种行 阅读全文
posted @ 2018-10-23 23:42 尐鱼儿 阅读(111) 评论(0) 推荐(0) 编辑
摘要:下面的程序循环遍历了一个int类型的数组序列,并且记录了满足某个特定属性的数组个数。那么,该程序会打印出什么呢? 该程序用thirdElementIsThree方法测试了tests数组中的每一个元素。遍历这个数组的循环显然是非传统的循环:它不是在循环变量等于数组长度的时候终止,而是在它试图访问一个并 阅读全文
posted @ 2018-10-23 23:42 尐鱼儿 阅读(146) 评论(0) 推荐(0) 编辑
摘要:在JDK1.2中,Thread.stop、Thread.suspend以及其他许多线程相关的方法都因为它们不安全而不推荐使用了[ThreadStop]。下面的方法展示了你用Thread.stop可以实现的可怕事情之一。 这个讨厌的小方法所做的事情正是throw语句要做的事情,但是它绕过了编译器的所有 阅读全文
posted @ 2018-10-23 23:42 尐鱼儿 阅读(105) 评论(0) 推荐(0) 编辑
摘要:下面的方法将一个文件拷贝到另一个文件,并且被设计为要关闭它所创建的每一个流,即使它碰到I/O错误也要如此。遗憾的是,它并非总是能够做到这一点。为什么不能呢,你如何才能订正它呢? 这个程序看起来已经面面俱到了。其流域(in和out)被初始化为null,并且新的流一旦被创建,它们马上就被设置为这些流域的 阅读全文
posted @ 2018-10-23 23:40 尐鱼儿 阅读(128) 评论(0) 推荐(0) 编辑
摘要:尽管在一个方法声明中看到一个throws子句是很常见的,但是在构造器的声明中看到一个throws子句就很少见了。下面的程序就有这样的一个声明。那么,它将打印出什么呢? main方法调用了Reluctant构造器,它将抛出一个异常。你可能期望catch子句能够捕获这个异常,并且打印I told you 阅读全文
posted @ 2018-10-23 23:39 尐鱼儿 阅读(144) 评论(0) 推荐(0) 编辑
摘要:下面的程序在寻常的Hello world程序中添加了一段不寻常的曲折操作。那么,它将会打印出什么呢? 这个程序包含两个println语句:一个在try语句块中,另一个在相应的finally语句块中。try语句块执行它的println语句,并且通过调用System.exit来提前结束执行。在此时,你可 阅读全文
posted @ 2018-10-23 23:38 尐鱼儿 阅读(162) 评论(0) 推荐(0) 编辑
摘要:本谜题测试的是你对某些规则的掌握程度,这些规则用于声明从方法中抛出并被catch语句块所捕获的异常。下面的三个程序每一个都会打印些什么?不要假设它们都可以通过编译: 第一个程序,Arcane1,展示了被检查异常的一个基本原则。它看起来应该是可以编译的:try子句执行I/O,并且catch子句捕获IO 阅读全文
posted @ 2018-10-23 23:37 尐鱼儿 阅读(131) 评论(0) 推荐(0) 编辑
摘要:本谜题中的程序所建模的系统,将尝试着从其环境中读取一个用户ID,如果这种尝试失败了,则缺省地认为它是一个来宾用户。该程序的作者将面对有一个静态域的初始化表达式可能会抛出异常的情况。因为Java不允许静态初始化操作抛出被检查异常,所以初始化必须包装在try-finally语句块中。那么,下面的程序会打 阅读全文
posted @ 2018-10-23 23:37 尐鱼儿 阅读(112) 评论(0) 推荐(0) 编辑
摘要:下面这个可怜的小程序并不能很好地做出其自己的决定。它的decision方法将返回true,但是它还返回了false。那么,它到底打印的是什么呢?甚至,它是合法的吗? 你可能会认为这个程序是不合法的。毕竟,decision方法不能同时返回true和false。如果你尝试一下,就会发现它编译时没有任何错 阅读全文
posted @ 2018-10-23 23:36 尐鱼儿 阅读(136) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示