卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

java異常代碼描述正確 java web項(xiàng)目中如何優(yōu)雅的處理異常?

java web項(xiàng)目中如何優(yōu)雅的處理異常?Java中的異常為識(shí)別和響應(yīng)錯(cuò)誤情況提供了一致的機(jī)制。有效的異常處理可以使程序更加健壯和易于調(diào)試。異常是一種強(qiáng)大的調(diào)試方法,因?yàn)樗卮鹆艘韵氯齻€(gè)問(wèn)題:哪里出了

java web項(xiàng)目中如何優(yōu)雅的處理異常?

Java中的異常為識(shí)別和響應(yīng)錯(cuò)誤情況提供了一致的機(jī)制。有效的異常處理可以使程序更加健壯和易于調(diào)試。異常是一種強(qiáng)大的調(diào)試方法,因?yàn)樗卮鹆艘韵氯齻€(gè)問(wèn)題:

哪里出了問(wèn)題?哪里出問(wèn)題了?為什么會(huì)出問(wèn)題?當(dāng)有效使用異常時(shí),異常類(lèi)型answers "什么?"和異常堆棧跟蹤答案 "哪里 "異常信息回答 "為什么?"。如果你的異常沒(méi)有。;如果你沒(méi)有回答以上所有的問(wèn)題,那么你可能沒(méi)有回答。;t.好好利用它們。有三個(gè)原則可以幫助您在調(diào)試過(guò)程中充分利用異常。這三項(xiàng)原則是:

為了解釋有效異常處理的這三個(gè)原則,具體到早拋晚抓

捕捉異常時(shí)盡可能清晰也很重要。例如,F(xiàn)ileNotFoundException可以通過(guò)重新詢(xún)問(wèn)用戶(hù)來(lái)處理。;的文件名如下。對(duì)于EOFException,它可以根據(jù)拋出異常前讀取的信息繼續(xù)運(yùn)行。

文件首選文件新文件(prefs filename)嘗試{ read preferences(prefs File)} catch(filenotfoundexceptionN e){ // Warn the user that the specified file//does not exist }catch (EOFException e){ // who have reached the end of the file//

通過(guò)使用多個(gè)catch塊,可以為用戶(hù)提供關(guān)于捕獲的異常的清晰信息。例如,如果捕獲到一個(gè)FileNotFoundException,它可以提示用戶(hù)指定另一個(gè)文件,在某些情況下,多個(gè)catch塊會(huì)帶來(lái)額外的編碼工作量。這可能是不必要的負(fù)擔(dān),但在這種情況下,額外的代碼確實(shí)有助于程序提供更友好的用戶(hù)響應(yīng)。

盡早拋出異常堆棧信息,提供導(dǎo)致異常的方法調(diào)用鏈的確切順序,包括每個(gè)方法調(diào)用的類(lèi)名、方法名、代碼文件名甚至行號(hào),從而準(zhǔn)確定位異常發(fā)生的場(chǎng)景。

At (local method)

At ()

At ()

At ()

At ()

At()顯示了FileInputStream類(lèi)的open()方法如何引發(fā)NullPointerException。但是,注意()是標(biāo)準(zhǔn)Java類(lèi)庫(kù)的一部分,這個(gè)異常的原因很可能是me。我們的代碼本身,而不是Java API。所以問(wèn)題很可能出現(xiàn)在前面的某個(gè)方法中,不過(guò)還好也打印在堆棧信息中。

不幸的是,NullPointerException是Java中信息量最少(但也是最常遇到和崩潰的)的異常。它不 不要提我們最關(guān)心的:其中是null。因此,我們必須后退幾步,找出問(wèn)題所在。

通過(guò)回退跟蹤堆棧信息并檢查代碼,我們可以確定錯(cuò)誤的原因是傳遞給readPreferences()的空文件名參數(shù)。因?yàn)閞eadPreferences()知道它可以 不處理空文件名,它會(huì)立即檢查以下情況:

公共void讀取首選項(xiàng)(字符串文件名)拋出IllegalArgumentException { if(filename null){ thRow new IllegalArgumentException}//If other operations ... the input stream in the new filePreference file ...}

通過(guò)盡早拋出異常(也稱(chēng)為 "快速故障 "),例外才能清晰準(zhǔn)確。堆棧信息立即反映出哪里(提供了非法的參數(shù)值),為什么出錯(cuò)(文件名不能為空),以及哪里出錯(cuò)(readPreferences()的第一部分)。。這樣,我們的堆棧信息可以如實(shí)提供:

File name is empty.

At ()

At ()

At ()

At ()

此外,其中包含的異常信息( "文件名為空 ")通過(guò)顯式回答什么是空的問(wèn)題,豐富了異常提供的信息,這是我們前面的代碼中拋出的NullPointerException所沒(méi)有提供的。

通過(guò)在檢測(cè)到錯(cuò)誤時(shí)立即拋出異常來(lái)實(shí)現(xiàn)快速失敗,可以有效避免不必要的對(duì)象構(gòu)造或資源占用,如文件或網(wǎng)絡(luò)連接。同樣,打開(kāi)這些資源帶來(lái)的清理操作也可以省略。

新手和專(zhuān)家都會(huì)因延遲捕獲而犯的一個(gè)錯(cuò)誤是在程序能夠處理異常之前捕獲它。Java編譯器通過(guò)要求必須捕獲或拋出檢測(cè)到的異常,間接地鼓勵(lì)了這種行為。自然的方法是立即將代碼包裝在try塊中,并使用c。Atch捕獲異常以防止編譯器報(bào)告錯(cuò)誤。

問(wèn)題是,捕獲后的異常應(yīng)該怎么處理?最后要做的就是什么都不做。一個(gè)空的catch塊就相當(dāng)于把整個(gè)異常扔進(jìn)了一個(gè)黑洞,所有能解釋什么時(shí)候、什么地方、為什么出了問(wèn)題的信息都將永遠(yuǎn)丟失。It 把異常寫(xiě)在日志里好一點(diǎn),至少有記錄可查。但是我科學(xué)家可以 不要期望用戶(hù)閱讀或理解日志文件和異常信息。It readPreferences()顯示錯(cuò)誤消息對(duì)話(huà)框也是不合適的,因?yàn)楸M管JCheckbook目前是一個(gè)桌面應(yīng)用程序,但我們也計(jì)劃將它轉(zhuǎn)變?yōu)橐粋€(gè)基于HTML的We。b應(yīng)用。在這種情況下,顯示錯(cuò)誤對(duì)話(huà)框顯然不是一個(gè)選項(xiàng)。同時(shí),無(wú)論HTML還是C/S版本,都是在服務(wù)器上讀取配置信息,需要將錯(cuò)誤信息顯示到Web瀏覽器或客戶(hù)端程序上。

ReadPreferences()在設(shè)計(jì)時(shí)應(yīng)該考慮這些未來(lái)的需求。用戶(hù)界面代碼和程序邏輯的適當(dāng)分離可以提高代碼的可重用性。

然后在最外層捕捉異常,統(tǒng)一處理:

文件首選文件新文件(prefs filename)嘗試{ read preferences(prefs File)} catch(filenotfoundexceptionN e){ // Warn the user that the specified file//does not exist }catch (EOFException e){ // who have reached the end of the file//

Spring統(tǒng)一異常處理如果是Spring框架,可以使用Spring 的統(tǒng)一異常處理機(jī)制,所有其他異常都拋出異常。

public void queryUser()拋出異常{}@RestControllerAdvicepublic類(lèi)GlobalExceptionHandler{@ExceptionHandler()公共Rsp handleDefaultException(異常異常){ if(的異常實(shí)例http requestmethodnotsupportedexception){(在get,post之前不支持此請(qǐng)求模式)}}

這里的一個(gè)目的是在頂層處理業(yè)務(wù)邏輯的異常。這個(gè)規(guī)則是為了明確異常(可以定義異常來(lái)明確),盡早拋出異常,延遲捕捉異常。

Java的throw exception是啥意思?

在Java中通常有兩種處理異常的方法。一種方法是拋出exception,也就是說(shuō),當(dāng)這段代碼出錯(cuò)時(shí),您不會(huì) 不要自己處理,把它留給打的人。

第二種是用try catch來(lái)處理,也就是出現(xiàn)問(wèn)題的時(shí)候自己處理。