1 當遇到在寫一個方法M1()時,只需要throws出一個自己定義的該方法特定的Exception,而其中如果調用其他方法M2(),而接到的Exception,可以用throw new RuntimeException處理,這樣做前提M2()throws出的Exception,對調用M1()的方法M3()並不想關心M2所throws出的Exception.如:
/**
*insert object
*@throws CreateException
*/
private void M1() throws CreateException {
String insertsql =
"insert into users ( LOGIN, PWD ,nickname) values (?,?,?)";
try {
this.M2();
}
catch (DataNotFoundException ex){
throw new RuntimeException("no find max(id) from users" + ex);
}
catch (SQLException ex) {
throw new CreateException("User.insert()" + ex);
}
finally{
conn.close();
}
}
public void M2() throws DataNotFoundException{
.........
}
public void M3() throws CreateException {
M1();
}
2
===========================================================================
ClassCastException(當企圖增加一個不兼容的對象到一個類集中時)
InterruptedException (操作線程的方法時)
NoSuchElementException (next() 返回下一個元素,如果沒有下一個元素)
NullPointerException (如果試圖使用映射不允許使用的null對象時,則引發一個 NullPointerException異常)
UnsupportedOperationException (對一個不可修改的類集使用某些修改方法)
IllegalMonitorStateException wait() 或notify()找不到 明確的 specified monitor 時
===========================================================================
3 Exception : 子類override父類中同方法,如果父類中該方法有拋異常,子類中該方法要不就不拋異常,否則要是同層或該異常的子類
注意:子類override方法可以不throws出錯誤,而且拋出的錯誤可以是父上一層,本層,子下一層,
4.You cannot use Error as well because it is not like the hierarchy of Exception.