Praxis 20. Be specific and comprehensive with the throws clause.

盡可能拋出細部的異常

在 Java 的設計裡面,異常也具備繼承體系,所以下面的例子是可以通過 Compile 的。

1
2
3
4
5
6
7
8
9
10
11
12
class ParentException{}
class SubException extends ParentException{}

public class compileExceptionDemo{
public void throwException(int num) throws ParentException {
if (num > 0){
throw new ParentException();
} else {
throw new SubException()
}
}
}

這樣的寫法,對於 Method 的調用者,無法清楚的明白,這個 Method 會產生的所有異常,比較好的 Method Signature 是下面這種:

1
public void throwException(int num) throws ParentException, SubExceptions

你需要把所有 Exception 明確的寫出來,在 method signature 寫出來。