![]() |
|
一旦出現這個問題,下一步就是要拿出對抗的策略。問題是我控制不了這個方法能否接收這種輸入。對于這類問題,開發人員通常會使用防御性編程技術,該技術專門用來在發生摧毀性后果前捕捉潛在錯誤。
clzz
是否為 null
,如清單 3 所示。如果其值最終為 null
,我就會拋出一個 RuntimeException
來警告他人注意這個潛在問題。
清單 3. 添加驗證 null 值的檢驗
public static Hierarchy buildHierarchy(Class clzz){
if(clzz == null){
throw new RuntimeException("Class parameter can not be null");
}
Hierarchy hier = new Hierarchy();
hier.setBaseClass(clzz);
Class superclass = clzz.getSuperclass();
if(superclass != null && superclass.getName().equals("java.lang.Object")){
return hier;
}else{
while((clzz.getSuperclass() != null) &&
(!clzz.getSuperclass().getName().equals("java.lang.Object"))){
clzz = clzz.getSuperclass();
hier.addClass(clzz);
}
return hier;
}
} |