a) finally:finally语句块总是在控制权离开try块时被执行。当在finally中出现意外结束(continue, break和return)时,try中的意外结束将被丢弃。所以每一个finally都应该正常结束,不能用意外结束(return, break, continue或者throw)退出一个finally块(但是如果在finally中有受检查的异常存在,那么还是需要在finally中用try-catch处理),并且不能让受检查的意外传播到finally块之外。(意外结束不包括System.exit所导致的程序退出,这一类的退出将停止所有的程序线程。如果try中有System.exit,那么finally将不会获得调用)
b) 如果一个catch要捕获一个E类型的异常,而其对应的try子句没有抛出E类异常,会产生编译异常。(但是如果E类型为Exception或Throwable,那么try子句抛不抛出都是可以的。)
c) 在多重继承里,一个方法可以抛出的受检查异常集合是它所使用(继承)的所有类型声明要抛出的受检查异常的交集。
d) Java不允许静态初始化操作抛出受检查异常,因而初始化必须包装在try-finally语句块中。
e) 通常必须重构一个程序,以消除由明确赋值规则(Java规定空final域只有在其未被赋值的地方才能被赋值。)引发的错误,通常可以考虑添加一个新方法。
f) 实例变量 (fields) 初始化操作先于构造器。构造器必须声明其实例初始化操作会抛出的所有受检查异常。(通过添加一个助手方法为fields赋值,可以避免这种情况。)如果对于设计的类中,其fields包含同样属于这个类的field,那么必须意识到其可能产生无限递归。
g) 不使用异常控制循环,如:
// int array[i]
try{
int i = 0;
while(true){ i++;…}
}catch(ArrayIndexOutOfBoundsException e){…}
而使用array.length判断数组越界否(这在《高质量的Java程序设计》中也有提及)
h) 编写一个监测类丢失的程序,应该使用反射来引用而不是使用通常的方法(如new TestClass(),然后用catch试图捕获NoClassDefFoundError),新方法的示例:
try{
Object m = Class.forName(“Missing”).newInstance();
}catch(ClassNotFoundError e){…}
由上面可见,不要产生对NoClassDefFoundError的依赖,因为类被加载的时机是不可预测的。而捕获Error及其子类一般都是不恰当的。
分享到:
相关推荐
2. **Java语言陷阱**:书中涵盖了许多常见的编程陷阱,如类型转换、变量作用域、异常处理、集合操作等,这些陷阱在日常编程中容易被忽视,但可能导致难以预料的错误。 3. **最佳实践**:除了揭示问题,作者还会给出...
Java Puzzlers 中文版(Java解惑) Java 谜题 1——表达式谜题 谜题 1:奇数性 下面的方法意图确定它那唯一的参数是否是一个奇数。这个方法能够正确运转 吗? public static boolean isOdd(int i){ return i % 2 == 1...
谜题 40:不情愿的构造器 尽管在一个方法声明中看到一个 throws 子句是很常见的,但是在构造器的声明 中看到一个 throws 子句就很少见了。下面的程序就有这样的一个声明。那么, 它将打印出什么呢?...
本書包含了Java程式語言和核心函式庫中的各種謎題,任何具備使用Java經驗的讀者都可以看得懂,但是書裡有不少謎題的難度頗高,即便是對經驗豐富的Java程式設計師而言,都是一項挑戰,所以如果你解不出來,別覺得難過...
《Java Puzzlers》是一本深受Java开发者喜爱的书籍,由Joshua Bloch和Neal Gafter合著。这本书专门探讨了Java编程语言中容易让人迷惑的陷阱和常见误解,通过一系列精心设计的“puzzlers”(谜题)来揭示这些陷阱,并...
Java Puzzlers(韩语版) 讲述了java中容易混淆的问题。 值得一看!
java puzzlers 中文版
《Java Puzzlers Code:揭示编程之谜》 Java Puzzlers 是一套经典的Java编程难题集,由Joshua Bloch和Neal Gafter合著,旨在帮助开发者深化对Java语言特性的理解和避免常见的陷阱。这些“puzzlers”通过一系列精心...
5. 异常处理:Java的异常处理机制是一个重要的知识点,书中可能涵盖try-catch-finally语句块的使用,以及何时应该捕获或抛出特定类型的异常。 6. 集合框架:Java集合框架包含了大量的类和接口,如List、Set、Map等...
6. **异常处理**:Java的异常处理机制是一个重要的话题,Puzzlers可能涵盖try-catch-finally语句块的使用,以及如何正确地抛出和捕获异常。 7. **多线程与并发**:Java提供了丰富的多线程支持,书中可能会通过...
5. **异常处理**:Java强制使用`try-catch-finally`块处理异常,但错误的异常处理策略可能导致程序逻辑混乱,例如不恰当的异常捕获和处理,或者在`finally`块中修改了程序状态。 6. **多线程与并发**:Java提供了...
通过对"java-puzzlers"源代码的学习,读者可以加深对Java语法、内存管理、异常处理、并发编程等多个方面的理解,并提升编程技巧。这些知识不仅适用于初学者,对于有一定经验的开发者来说,也是巩固和扩展Java知识...
综上所述,`java_puzzlers`中文版中的这两个谜题,揭示了Java编程中容易忽视的细节,包括取余运算的符号敏感性和浮点数计算的不精确性。通过深入理解这些问题及其解决方案,开发者可以编写更加健壮和准确的代码。
《JAVA解惑》是一本专为Java爱好者设计的书籍,旨在帮助读者解决在学习和使用Java过程中遇到的各种问题。这本书以PDF格式提供,方便电子阅读和保存。在深入探讨Java编程语言的过程中,它覆盖了从基础概念到高级特性...
JAVA解惑 中文和英文 Like many books, this one had a long gestation period. We've collected Java puzzles for as long as we've worked with the platform: since mid-1996, in case you're curious. In early...
- **异常处理**:如何有效地处理运行时错误,避免程序崩溃,以及如何使用try-catch-finally语句块。 - **泛型与集合框架**:深入讲解Java中的泛型概念及其应用,同时介绍各种集合类(List、Set、Map等)的特点和使用...
Java™ Puzzlers: Traps, Pitfalls, and Corner Cases.chm,英文版本,chm 格式,大小 1 Mb,作者:Joshua Bloch、Neal Gafter。 内容预览: Chapter 1. Introduction Chapter 2. Expressive Puzzlers Puzzle 1: ...
这本书的标题《Java Puzzlers: Traps, Pitfalls, and Corner Cases》揭示了其内容核心——解决Java编程语言中的陷阱、缺陷和边缘案例。在描述中提到,本书旨在帮助读者对Java编程中看似棘手的问题进行讲解,从而使...
本书深入研究Java编程语言及其核心类为的细微之处,特写95个有关Java或其他类库的陷阱和缺陷的谜题,其中大多数谜题都采用短程序的形式给出。在每个谜题之后都有详细的解惑方案,这些方案在给出那些实际行为与表面上...