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.