十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
你好,很高興回答你的問(wèn)題。
十載的建德網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷(xiāo)型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整建德建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“建德網(wǎng)站設(shè)計(jì)”,“建德網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
拋出異常時(shí)會(huì)同時(shí)告訴你異常是哪行代碼拋出的。
對(duì)應(yīng)的去檢查這行代碼,找到問(wèn)題,做對(duì)象的修復(fù)即可。
如果有幫助到你,請(qǐng)點(diǎn)擊采納。
比如你又一個(gè)方法叫a,調(diào)用了一個(gè)方法b(b方法throws了一個(gè)異常),那么在a里面使用try-catch捕獲這個(gè)異常,在catch塊里面,使用jsp的request,或者session將異常對(duì)象e.getMessage的內(nèi)容存儲(chǔ)到制定的變量里面(例如request.setAttribute("errorMessage",e.getMessage));
然后到頁(yè)面使用EL表達(dá)式${errorMessage}取出來(lái)就好了。
檢查日志文件,你就能看到滿(mǎn)屏重復(fù)的異常。
因此,異常只能被打印一次。在哪兒打異常最好呢?。
原則就是自定義異常在拋出前打印一下,其他各層對(duì)自定義異常不作任何打印。甚至不用Catch.
對(duì)于上面WebServiceClient.login,在這打印是對(duì)的,還可以加上自己的一些log信息,如log.fatal("cannotlogintheXXXsystem");至于在其他層,就不在需要打印,處理這個(gè)異常了。這樣的異常處理沒(méi)有什么技術(shù)含量,只是個(gè)異常處理原則,如果人人都遵循(看到自定義不處理,拋?zhàn)远x異常前處理)這個(gè)原則,就能避免重復(fù)打印異常日志
再考慮如何把友好的異常信息給終端用戶(hù)呢,所謂友好,不能總是提示“系統(tǒng)錯(cuò)誤,請(qǐng)稍后再試”,因?yàn)檫@樣能讓使用者對(duì)系統(tǒng)沒(méi)有信心。好比領(lǐng)導(dǎo)交給你的任務(wù),你沒(méi)有完成,你總不能每次都說(shuō)“這是我的問(wèn)題,以后改正”吧。對(duì)異常進(jìn)行稍微詳細(xì)的說(shuō)明,是必要的。另外,也不能總是把異常的stacktrace原封不動(dòng)的現(xiàn)實(shí)給使用者,如java.io.IOExcepiton:Filecannotbefound.這樣會(huì)被認(rèn)為你的程序質(zhì)量不夠高。
可以通過(guò)異常指定類(lèi)型來(lái)在Web層解釋并轉(zhuǎn)化為友好的異常
。如上列子,可以如下定義MyApplicationExceptoin
如下代碼:
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
這句是尋找缺省的打印服務(wù),如果找不到就返回null。你在本地找得到本地的打印機(jī),程序到另一個(gè)機(jī)器了,那上面沒(méi)有缺省的打印服務(wù),當(dāng)然就返回null了。