熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

淺談異常與戀愛

2013-11-23 19:08:01  來源: Java核心技術 

  前面扯過一篇淺談面向對象與女娲造人今兒我接著扯……

  在我的理解中所謂的異常機制也就是讓程序在出現某些錯誤的情況下還能繼續執行完如同兩個人在戀愛雖然出現各種問題但還是希望將來能繼續走下去

  在java的異常結構中有一個頂級父類叫做Throwable這個父類具有兩個子類分別是

  Error

  Exception

  為了便於初學者能更好的理解異常機制我姑且先列舉一些不恰當的例子

  可以這樣理解Error

  你某天很舒服的坐在沙發上看電視你爸突然把你拉到書房裡語重心長的對你說

  你和她不能在一起她其實是你失散多年的親妹妹(神馬感覺心裡一萬只草泥馬在奔跑對不對?)

  終於能在一起了尼瑪突然在她房間抽屜發現當年變性手術的費用單(這次不只一萬只了)

  兩個例子都有一個共同點就是你不會和她繼續在一起了你們的結合會是一種Error(錯誤)是硬傷!!!

  對於這種根本無法解決或無法隱忍的情況就是所謂的Error懂了吧

  而在java語言中Error則是代表硬件jvm或代碼本身存在問題

  雖然你對於無法處理這一情況很不甘心但你還是會一遍遍檢查配置和你的代碼以期望能夠解決

  再看看Exception

  把致命問題Error排除了(她是個好女孩)現在你和她能夠在一起(程序能夠繼續執行)又多了一份希望

  但是你仍然不能掉以輕心

  兩個人相處難免會產生一些不好的情緒一旦你沒能處理好那麼兩個人的感情還是over(程序無法繼續執行)

  在這裡Exception就是那些你要處理的情緒問題的總稱

  為什麼是總稱呢?因為大腦產生的情緒(異常)非常復雜還可細分為各種情緒(糾結體)……

  我們判斷一個人的情緒是靠經驗比如產生這種壞情緒後她有哪些行為和反映

  

  在java裡Exception是一個父類它還有很多的子類(也就是各種壞情緒的封裝)

  你看就這麼簡單我們就理解了整個java的異常體系

  

  Throwable下的兩個已知子類Error和Exception

    

  Exception下的各個細分的異常

  既然我們了解了java的異常體系也知道了Error是無法處理的那麼我們能做的就是針對Exception的操作了

  也就是在戀愛過程中我們對她壞情緒的處理好讓兩個人的感情能夠繼續……

  那麼如何操作呢?

  很簡單你只需要進行判斷和測試確認她的行為是否符合你經驗中她這一壞情緒的反映然後做出處理就行了

  相信你一定知道基本的除數為異常這裡就不再寫了任何一本基礎書都有

  為了避免針對性的代碼造成不好理解我們下面都寫偽碼

  實例典型的trycatch結構

  //女友為什麼是public?因為誰都能追  
   public class GirlFriend {  
       //還記得嗎?你們的故事就是從這開始的  
       public static void main(String[] args) {  
          
       //我們用try包裹的代碼來判斷和測試她不穩定的壞情緒  
       try {  
           她小情緒的反映  
           她小情緒的行為  
           她小情緒的眼神  
           ……  
          
       //在實際中則是Exception e你肯定知道  
       //為什麼有個e對象都說了異常也是一種類  
       //所謂的catch就是捉到她壞情緒的原因並進行處理  
       } catch (工作累了異常 e) {  
           //打印異常信息你可以認為是她在訴說原因  
           //實際中我們要結合場景來處理  
           eprintStackTrace();  
       }  
       }  
   } 

  你看這樣我們就能有針對性的處理單個異常了在try裡面測試catch裡面進行處理當然有時候一個人情緒不好是由於多種原因那麼你只能小心翼翼的根據經驗來捕捉更多的異常(壞情緒的封裝對象)此時你也就需要多條catch語句了

  實例復合的catch語句

  try {  
         
   } catch (工作累了異常 e) {  
       捶背  
   } catch (口渴了異常 e) {  
       倒水  
   } catch (被鄙視了異常 e) {  
       安慰  
   //這裡的Exception是所有壞情緒的父類  
   } catch (Exception e) {  
       各種安慰  
       各種獻殷勤  
       各種傾聽  
   } 

  為什麼所有壞情緒對象(Exception)要放到最後捕捉呢?

  很好理解當你在無法確定她到底是累了渴了還是怎麼地產生的壞情緒時你便可以認為反正她就是特麼的很煩想鬧脾氣你得處理!!!(不然就over)

  好吧你看到了不論是討好女友還是處理異常都是一件相當不爽的事

  下面我們來看看一個很簡單很樸實的關鍵字finally

  實例finally語句的使用

  try {  
      
         
          
   } catch (Exception e) {  
       //Todo  
   } finally {  
       不管你特麼心情好不好  
       反正都是老子洗碗!!!  
       靠……  
   } 

  看finally好用吧你可以這樣理解

  是男人就應該默默的承擔不管有沒有異常我都執行在java中finally最常用的場合就是最後關閉io流對象了可見我寫的另一篇筆記

  至此我們已經講完了java異常的基礎操作

  新手可能會問咦?throws和throw兩大關鍵字去哪兒了

  別急咋慢慢來去端杯茶緩緩……

  對於throws在java中的意思是讓調用處去處理這一異常

  就比如說她們受了一頓悶氣本來你不說還沒什麼你一說她們就忍不住了

  把所有的火都對你發誰讓你要去惹她們的?

  自己可以處理卻不處理俺們就叫做throws一般在方法後面使用

  實例throws的用法

  public void 降低憤怒() throws 憤怒的異常 {  
          
       /*你看在這裡明明可以trycatch的  
       但是卻沒有把異常給拋到了調用處*/ 
          
            //這是處理方法此處省略N行代碼  
          
   } 

  本來在降低憤怒()這一方法中可以trycatch的但是不想要留給招惹它的人那就用throws吧誰惹我誰遭殃

  其實女人是一種很奇怪的動物她們有時候會假裝自己生氣從而達到讓你哄的目的典型的欠try有木有……

  那麼這個時候throw就發揮了作用在java中throw表示人為的拋出一個異常

  實例throw的用法

  public void throwMethod() throws Exception {  
          
       throw new 發嗲了異常(干爹你來~~)  
          
   } 

  這裡在throwMethod方法中我們人為拋出了一個發嗲了異常然後給調用處try

  至於catch部分的內容你們自己看著辦……(尼瑪我才怎麼就那麼**了)

  再來我們在翻看API文檔的時候也許會發現類似下面的方法

  

  它們明明拋出了異常而我們在使用中卻沒有try這是怎麼回事?

  這叫做RuntimeException也就是運行時異常它們可try可不try因為一旦產生這種異常就說明你的代碼可能存在問題比如數組下標越界等此時trycatch意義不大檢查和修改源碼才是最佳選擇最後來說說自定義異常自定義異常一般用的不是很多可以這樣理解

  有時候你的女友亂發脾氣完全不按套路出牌令你不知所措以前的經驗在此也似乎失效那麼此時我們就可以定義一個自定義異常來描述這種情況

  public class CustomException extends Exception {  
       public CustomException(String msg) {  
           super(msg);  
       }  
   } 

  如果想測試的話可以throw一個新的CustomException對象構造方法中加入信息就可以了

  然後你懂的trycatch處理

  很簡單就沒必要演示了


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26332.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.