- 早抛出,晚捕获
- 异常不能代替简单的测试语句
- 不要过分细化异常,这样会使代码膨胀
try-finally
如果finally 子句中也有一个return 语句, 这个返回值将会覆盖原始的返回值
public static int f(int n) {
try {
int r = n*n;
return r;
}finally {
if(n == 2)
return 0;
}
}
System.out.println(f(2));//输出为0
泛型
public static <T extends Comparab1e> T min(T[] t)
Comparable 是一个接口,为什么使用关键字extends 而不是implements ?选择关键字extends 的原因是更接近子类的概念。
一个类型变量或通配符可以有多个限定,例如T extends Comparable & Serializable
if (a instanceof Pair<String>) // Error
Pair<String>[] table = new Pair<String>[10] ; // Error
Pair<String>[] table = (Pair<String>[]) new Pair<?>[10]; //true
不能在静态域或方法中引用类型变量
public class exception<T> {
public static void print() {
T a;// error
}
}