国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[六字真言]1.唵.遁入佛門之異常.md

Baaaan / 3384人閱讀

摘要:出現這種情況的可能性太多太多,例如服務器連接不上參數不正確等。調用代碼需要進一步處理和恢復。當然清理資源后,可以繼續拋出非檢測異常,阻止程序的執行。根據觀察和理解,檢測異常大多可以應用于工具類中。

“唵”,表示佛部心,謂念此字時,自己的身體要應于佛身,口要應于佛口,意要應于佛意,所謂身、口、意與佛成一體,才能獲得成就;

異常的選擇

異常的分類,你應該知道:

受審查異常

非受審查異常

發現學生在使用過程當中,沒有區分,也不知道應該什么時候使用?跟不清楚怎么樣合理的使用異常!
我再后面接手的課程體系當中,學生如果在使用異常的情況下,最愛的是Exception,怎么解釋呢,簡單好用?只能心里默默的呵呵!而作為一名開發人員使用比較多的是非受審查異常[繼承RuntimeException]!往往這個時候,學生就懵圈了,為什么呢?因為看不到錯誤了,不知道哪里錯了!
心在滴血,因為給自己增加了難度,何必難為自己嫩?
那么,如何使用異常呢?簡單說一下個人的理解:

調用或者執行的代碼不能繼續執行,需要立即終止。出現這種情況的可能性太多太多,例如服務器連接不上、參數不正確等。這些時候都適用非檢測異常,不需要調用代碼的顯式捕捉和處理,而且代碼簡潔明了。

調用代碼需要進一步處理和恢復。假如將 SQLException 定義為非檢測異常,這樣操作數據時開發人員理所當然的認為 SQLException 不需要調用代碼的顯式捕捉和處理,進而會導致嚴重的 Connection 不關閉、Transaction 不回滾、DB 中出現臟數據等情況,正因為 SQLException 定義為檢測異常,才會驅使開發人員去顯式捕捉,并且在代碼產生異常后清理資源。當然清理資源后,可以繼續拋出非檢測異常,阻止程序的執行。根據觀察和理解,檢測異常大多可以應用于工具類中。

胖先生說一下:

讓機器自己去處理,我們不管!

就是我們需要捕獲并且自己處理

在實際開發當中,胖顯示都會把受審查變成非受審查的,但是同時我根據自己的業務需要進行處理!

別把客戶想的太聰明

將異常直接打印在客戶端的例子屢見不鮮,以 JSP 為例,一旦代碼運行出現異常,默認情況下容器將異常堆棧信息直接打印在頁面上。其實從客戶角度來說,任何異常都沒有實際意義,絕大多數的客戶也根本看不懂異常信息,軟件開發也要盡量避免將異常直接呈現給用戶。

客戶都是比較懶的人,如果出現那種文字,站在你的角度,我想會感覺到厭惡,考察我英語四級能力呢?

 package com.pangsir.test.sample.exception;
 /**
  * 自定義 RuntimeException
  * 添加錯誤代碼屬性,一種簡單的封裝
  */
 public class RuntimeException extends java.lang.RuntimeException { 
     //默認錯誤代碼 
     public static final Integer GENERIC = 1000000; 
     //錯誤代碼
     private Integer errorCode; 
      public RuntimeException(Integer errorCode, Throwable cause) {
             this(errorCode, null, cause);
      }
      public RuntimeException(String message, Throwable cause) {
             //利用通用錯誤代碼
             this(GENERIC, message, cause);
      }
      public RuntimeException(Integer errorCode, String message, Throwable cause) {
             super(message, cause);
             this.errorCode = errorCode;
      }
      public Integer getErrorCode() {
             return errorCode;
      } 
 }

正如示例代碼所示,在異常中引入錯誤代碼,一旦出現異常,我們只要將異常的錯誤代碼呈現給用戶,或者將錯誤代碼轉換成更通俗易懂的提示。其實這里的錯誤代碼還包含另外一個功能,開發人員亦可以根據錯誤代碼準確的知道了發生了什么類型異常.

別玷污我

我們授課當中經常說基于MVC思想的開發架構,因此我們將代碼分為controller,Service,Dao等不同的層次,Dao層中經常會拋出異常的方法[因為不熟練,因為SQL語句經常寫錯誤],都是過來人:
Dao層代碼:

public User load(Integer user_id) throw SQLException {
//根據 ID 查詢數據庫,獲取用戶對象信息
}

如果代碼是這樣寫的,沒有什么問題,可以說正確,但是不符合規范!
從設計耦合角度仔細考慮一下,這里的 SQLException 污染到了上層調用代碼,調用層需要顯式的必須利用 try-catch 捕捉 或者 向更上層次繼續拋出。根據隔離原則,我們可以適當修改成:

 public User load(Integer user_id) {
      try{
             //根據 ID 查詢數據庫
      }catch(SQLException e){
          //利用非檢測異常封裝檢測異常,降低層次耦合
         throw new RuntimeException(SQLErrorCode, e);
      }finally{
             //關閉連接,清理資源
      }
 }
別不在乎我的感受

在學生開發當中,也可以說我為了圖省事的過程當中,經常說的一句話就是你把異常輸出[打印]控制臺中,其實這樣沒有任何意思!
重要|重要|重要:

這樣的處理沒有意思,因為你沒有中斷程序的執行,進而調用代碼會繼續自行,導致更多的異常

想想你是否寫過這樣的代碼:

 public void update(User user){
    try{
        //..some code that throws SQLException
     }catch(SQLException ex){
      /**
        *了解的人都知道,這里的異常打印毫無意義,僅僅是將錯誤堆棧輸出到控制臺。
        * 而在 Production[生產] 環境中,需要將錯誤堆棧輸出到日志。
        * 而且這里 catch 處理之后程序繼續執行,會導致進一步的問題
        * */

      ex.printStacktrace();
     }
 }

代碼重構

 public void update(User user){
  try{
     //..some code that throws SQLException
  }
  catch(SQLException ex){
     //轉換成非受審查異常
     throw new RuntimeException(“自己描述性語言,例如com.pangsir.user.dao.UserDao.update 執行過程出錯”, ex);
  }
  finally{
     //關閉資源
  }
 }

這個誤區比較基本,一般情況下都不會犯此 > 低級錯誤 < 。

地主家也沒有余糧

看一下,下面的代碼是否有問題?

 //假設獲取用戶的所有信息
 List userList = this.userDao.listAll();//
 for(int i=0; i

在講課的時候我們已經知道異常處理占用系統資源.別把這個多帶帶看成一個演示示例,想想我們的設計當中從控制層->Service->Dao層

換個角度說,類 A 中執行了一段循環,循環中調用了 B 類的方法,B 類中被調用的方法卻又包含 try-catch 這樣的語句塊。褪去類的層次結構,代碼和上面如出一轍。

還有一次隱藏的錯誤,這里我就不說了!有過有知道請留言給我,不是錯誤,就是不符合地主家沒有余糧的概念!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65089.html

相關文章

  • Python爬蟲框架Scrapy實戰 - 抓取BOSS直聘招聘信息

    原文地址: http://www.jtahstu.com/blog/s... Python爬蟲框架Scrapy實戰 - 抓取BOSS直聘招聘信息 零、開發環境 MacBook Pro (13-inch, 2016, Two Thunderbolt 3 ports) CPU : 2 GHz Intel Core i5 RAM : 8 GB 1867 MHz LPDDR3 Python 版本: v3...

    caohaoyu 評論0 收藏0
  • Python爬蟲框架Scrapy實戰 - 抓取BOSS直聘招聘信息

    原文地址: http://www.jtahstu.com/blog/s... Python爬蟲框架Scrapy實戰 - 抓取BOSS直聘招聘信息 零、開發環境 MacBook Pro (13-inch, 2016, Two Thunderbolt 3 ports) CPU : 2 GHz Intel Core i5 RAM : 8 GB 1867 MHz LPDDR3 Python 版本: v3...

    zero 評論0 收藏0
  • 上古程序猿堅決反對用Redis,我該怎么說服他?

    摘要:前段時間,有個人吐槽自己的同事是上古程序猿,一直堅持反對使用。上古程序猿堅決反對用,我該怎么說服他分布式鎖如果你是一位后端工程師,面試時八成會被問到,特別是大廠,不僅要求能簡單使用,還要深入理解底層原理,具備解決常見問題的能力。 前段時間,有個人吐槽自己的同事是上古程序猿,一直堅持反對使用Redis。那位上古程序猿設計公司...

    番茄西紅柿 評論0 收藏2637
  • 上古程序猿堅決反對用Redis,我該怎么說服他?

    摘要:前段時間,有個人吐槽自己的同事是上古程序猿,一直堅持反對使用。那位上古程序猿設計公司的業務系統時候,始終堅持永遠不要用緩存其他人想用,例如做個接口防重復,一定要用數據庫來實現,包括定期失效之類的功能。項目中使用,主要考慮性能和并發。 前段時間,有個人吐槽自己的同事是上古程序猿,一直堅持反對使...

    不知名網友 評論0 收藏0
  • 上古程序員實名反對用Redis,我是拿他沒辦法了

    摘要:前段時間,有個人吐槽自己的同事是上古程序猿,一直堅持反對使用。那位上古程序猿設計公司的業務系統時候,始終堅持永遠不要用緩存其他人想用,例如做個接口防重復,一定要用數據庫來實現,包括定期失效之類的功能。項目中使用,主要考慮性能和并發。 前段時間,有個人吐槽自己的同事是上古程序猿,一直堅持反對使...

    不知名網友 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<