Open source are the greatest wealth---WANGPENG
          posts - 46, comments - 11, trackbacks - 0, articles - 0
             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          [轉載]throw throws 的區別

          Posted on 2009-07-28 21:06 WANGPENG 閱讀(205) 評論(0)  編輯  收藏 所屬分類: Java
          這兩者雖然看起來只有一個s的區別,但是作用完全不一樣
          /////java處理異常方式///////////////////////////////
          在java代碼中如果發生異常的話,jvm會拋出異常對象,導致程序代碼中斷,這個時候jvm在做的操作就是:創建異常對象,然后拋出,比如:

          int i= 1;
          int j = 0;
          int res = 0;
          res = i/j;//除0錯誤
          System.out.println(res);

          這5句代碼運行到第四句會中斷,因為jvm拋出了異常

          ////throw的作用/////////////////////////////////////////
          手動拋出異常

          但是有時候有些錯誤在jvm看來不是錯誤,比如說
          int age = 0;
          age = -100;
          System.out.println(age);
          很正常的整形變量賦值,但是在我們眼中看來就不正常,誰的年齡會是負的呢.
          所以我們需要自己手動引發異常,這就是throw的作用
          int age = 0;
          age = -100;
          if(age<0)
          {
          Exception e = new Exception("throw exception");//創建異常對象
          throw e;//拋出異常
          }
          System.out.println(age);

          ////throws的作用///////////////////////////////////
          聲明方法可能回避的異常

          有異常被拋出了,就要做處理,所以java中有try-catch
          可是有時候一個方法中產生了異常,但是不知道該怎么處理它,那么就放著不管,當有異常拋出時會中斷該方法,而異常被拋到這個方法的調用者那里.這個有點像下屬處理不了的問題就交到上司手里一樣,這種情況稱為回避異常
          但是這使得調用這個方法就有了危險,因為誰也不知道這個方法什么時候會丟一個什么樣的異常給調用者,所以在定義方法時,就需要在方法頭部分使用throws來聲明這個方法可能回避的異常
          void fun()throws IOException,SQLException
          {
          ...
          }
          這表示 fun方法可能會丟兩個異常出來,那么在調用fun的時候就會做好準備,比如可以這樣
          try
          {
          fun();
          }catch(IOException e)
          {
          }catch(SQLException e)
          {
          }
          主站蜘蛛池模板: 信丰县| 彩票| 天祝| 方城县| 陈巴尔虎旗| 长寿区| 涪陵区| 黄石市| 萍乡市| 华宁县| 金华市| 大方县| 怀安县| 郴州市| 甘孜| 青阳县| 保康县| 竹北市| 开鲁县| 安溪县| 郸城县| 建水县| 基隆市| 子长县| 六枝特区| 西畴县| 安康市| 泾阳县| 年辖:市辖区| 高阳县| 高州市| 湖州市| 平罗县| 长垣县| 兴城市| 曲靖市| 五原县| 岑溪市| 崇明县| 威远县| 正定县|