看編程思想的異常處理這一章,Throwable是所有異常的基類,Error和Exception分別繼承了Throwable,Error是虛擬機運行報告錯誤,一般我們不用關心,Exception 是所有編程異常的基類,它又分為被檢查異常和不檢查異常,不檢查異常是所有繼承于RuntimeException的異常,這些異常編譯器在編譯時不進行檢查,也就是不用有異常聲明,遇到錯誤會自動拋出,被檢查異常時除RuntimeException的異常,必須有異常聲明,編程思想里面的說法好像大家對強制異常聲明不是很贊同,理由沒能理解深刻,都是大師們說的話,哈哈。咱還不夠那個級別。
其中有這樣一個問題,就是一個方法有一個異常必須作處理,可又不知道該如何處理,這里有個辦法就是在catch里面將其轉換成運行時異常RuntimeException,這樣就不用異常聲明了。
哈哈,剛剛看了異常處理這一章,今天就用上了,編好了一段hibernate的代碼,測試就是沒有結果輸出,并且沒有異常出現,真是讓人惱火,找阿找阿找,最后發現在初始化SessionFactory的靜態語句塊中雖然用了try…catch語句但是在catch里面只是將異常拋出,而在跳用這段代碼的時候,并沒有獲取這個異常,所以造成異常丟失。
另外,錯誤的原因是虛擬機找不到一個屬性的get方法,換了個名字就好了,注意命名規則,一個小寫字母然后接一個大寫字母就不行,像這樣sLive。注意/。
在執行Hibernate程序中出現下面錯誤
Could not read mappings from resource: DepartmentTwo.hbm.xml
檢查也沒錯阿,找不到的文件老老實實在那呆著了阿,仔細檢查異常信息,發現下面還有這么一句。
org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.hwebmapping.pojo.Department
原來一個持久類不能多次被映射,所以才出現這樣的異常,原因是在做練習的時候為了省事,將原來做好的持久類想接著用一下,沒想到Hibernate有意見,哈哈。
如果在調用session.save()方法的時候如果傳入的對象所的類沒有被映射,就會出現線面的異常信息。
uninitialized proxy passed to save()
未初始化的代理
不錯,今天收獲不小,哈哈。