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