91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JAVA中異常處理使用不當該怎么辦

發布時間:2021-11-26 10:27:16 來源:億速云 閱讀:117 作者:柒染 欄目:編程語言

JAVA中異常處理使用不當該怎么辦,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

★空的 catch 語句塊

  犯這種錯誤的人比較少,一般發生在剛學會 Java 或者剛參加工作不久的人身上。
  所謂“空 catch 語句塊”就是在 catch 語句塊中沒有對異常作任何處理(比如記錯誤日志),導致異常信息被丟棄/忽略。一旦程序不能正確運行,由于查不到任何 log 信息,只好從頭看代碼,靠肉眼找 bug。

★沒有使用 finally

  很多人在 catch 語句之后不使用 finally 語句。由于在 try 語句中可能會涉及資源的申請和釋放。如果在資源申請之后、資源釋放之前拋出異常,就會發生資源泄露。

★籠統的 catch 語句塊

  有些人為了省事,只在自己模塊的最外層代碼包一個 try 語句塊,然后 catch(Exception)。不管捕獲到什么異常,都作統一 log 了事。這種做法比“空 catch 語句塊”稍好,但由于不能對具體的異常進行具體處理,對一些可恢復的異常(下面會提到),喪失了恢復的機會。而且也可能導致上述提到的資源泄露的問題。

★使用函數返回值進行錯誤處理

  有些人放著 Java 的異常機制不用,而用函數返回值來表示成功/失敗(比如:返回 true 表示成功、false 表示失敗),簡直是“捧著金碗要飯”。個人感覺,從 C 轉到 Java 的人比較容易有此毛病。這種做法會導致如下幾個問題:
1. 返回值一般用整數值或布爾值表示,傳遞的信息過于簡陋;
2. 一旦調用者忽略了錯誤返回碼,就會導致和“空 catch 語句塊”類似的問題;
2. 對同一個函數的多處調用,都需要對返回值進行重復判斷,導致代碼冗余。

★不清楚“Checked Exception”和“Runtime Exception”的區別

  這個現象比較普遍,俺發現很多2年以上 Java 工作經驗的人尚未完全搞明白兩者的區別。看來這個問題得詳細說一下。
當初Java的設計者有意區分這兩種異常,是別有深意的。其中“Checked Exception”用于表示可恢復的異常(也就是你必須檢查的異常);而“Runtime Exception”表示不可恢復的異常(也就是運行時異常,主要是程序 bug 和致命錯誤,你【不需要】檢查)。不過這種做法引來了很多爭議(包括很多 Java 大牛),鑒于本帖子主要針對新手,以后再專門來聊這個爭議的話題。
  為了便于理解,下面我舉一個例子來說明。假設你要寫一個 Download 函數,根據傳入的 URL(String 參數)返回對應網頁的內容文本。這時候有兩種情況你需要處理:
1. 如果傳入的 URL 參數是 null,這表明該函數的調用者出 bug 了,而程序本身的 bug 是很難在運行時自我恢復的。這時候 Download 函數必須拋出 Runtime Exception。并且 Download 函數的調用者【不應該】嘗試去處理這個異常,必須讓它【盡早】暴露出來(比如讓 JVM 自己終止運行)。
2. 如果傳入的 URL 參數非 null,但是它包含的字符串不是一個合法的URL格式(可能由于用戶輸入錯誤導致)。這時候 Download 函數必須拋出 Checked Exception。并且 Download 函數的調用者必須捕獲該異常并進行相應的處理(比如提示用戶重新輸入 URL)。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南澳县| 榕江县| 天全县| 新安县| 双峰县| 化州市| 北票市| 洛浦县| 沂水县| 青铜峡市| 阿拉尔市| 临武县| 邯郸市| 寻乌县| 灵武市| 沙河市| 日照市| 新蔡县| 仪陇县| 遵义县| 吉林市| 偏关县| 陈巴尔虎旗| 祁连县| 孟连| 旬阳县| 莫力| 邢台县| 威远县| 罗源县| 拜泉县| 柯坪县| 盐源县| 隆回县| 乌拉特前旗| 神木县| 凤凰县| 伊通| 鄱阳县| 宣武区| 商水县|