關鍵字throw和throws的區別

           

          void  foo()  throws  FooException,Foo2Exception{ 
                    //other  code 
                     
                    throw  new  FooException(); 
            } 

          throw語句用在方法體內,表示拋出異常,由方法體內的語句處理。不能單獨使用,要么和try catch一起使用,要么和trows一起使用。 
          throws
          語句用在方法聲明后面,表示這個方法可能拋出異常, 表示的是一種傾向、可能,但不一定實際發生。由調用這個方法的上一級方法中的語句來處理 。后面可以跟多個異常,中間用逗號分割。

           

          例如:

          void doA() throws Exception1, Exception3 {
            try {
              ……
            } catch(Exception1 e) {
              throw e;
            } catch(Exception2 e) {
              System.out.println("
          出錯了");
            }
            if (a != b)
              throw new Exception3("
          自定義異常");
          }

          代碼塊……中可能產生異常Exception1、Exception2Exception3。
          如果產生Exception1異常,則捕捉了之后拋出由該方法的調用者去做處理;
          如果產生Exception2異常,則該方法自己做了處理(打印出了說出錯了),所以該方法就不會再向外拋出Exception2異常了,void doA() throws Exception1,,Excpetion3里面的Exception2也就不用寫了;
          Exception3異常是該方法的某段邏輯出錯,程序員自己作了處理在該段邏輯錯誤的情況下拋出異常Exception3,則調用者也需要處理。

           

          posted on 2008-07-24 10:44 chenkai 閱讀(723) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2008年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 天峻县| 康马县| 泽库县| 明溪县| 哈尔滨市| 松原市| 凌海市| 溆浦县| 独山县| 汾阳市| 常山县| 温州市| 伊金霍洛旗| 南投县| 维西| 温宿县| 东方市| 平昌县| 唐河县| 蓬安县| 太和县| 二连浩特市| 洛宁县| 铜山县| 沙湾县| 衡阳县| 黔南| 徐闻县| 涿鹿县| 咸宁市| 唐海县| 临澧县| 浮山县| 郯城县| 墨竹工卡县| 克山县| 平昌县| 华阴市| 乌苏市| 广河县| 盐池县|