例如使用JDBC與DAO時(shí), DAO接口中沒(méi)有定義為拋出SQL異常, 但在實(shí)現(xiàn)的時(shí)候又不能把SQL異常給忽略掉, 而又不想去修改DAO接口, 這時(shí)可以捕捉到SQL異常, 然后取得其信息, 拋出一個(gè)運(yùn)行時(shí)異常:
throw new RuntimeException(e.getMessage(), e);
SQL異常是編譯時(shí)異常, 在編譯的時(shí)候就進(jìn)行判斷, 而運(yùn)行時(shí)異常在編譯的時(shí)候不強(qiáng)制捕捉或者再次拋出, 只有在運(yùn)行時(shí)出現(xiàn)異常的時(shí)候才會(huì)拋出, 是可選擇性捕捉的, 如Hibernate就使用了運(yùn)行時(shí)異常.