關鍵字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 閱讀(713) 評論(0)  編輯  收藏


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


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

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永兴县| 无为县| 吴桥县| 连江县| 柘荣县| 南阳市| 武威市| 太保市| 同德县| 定兴县| 无锡市| 商河县| 巫山县| 施甸县| 梓潼县| 汕头市| 江孜县| 稻城县| 鄂州市| 谷城县| 沁源县| 和顺县| 永吉县| 石河子市| 吉木萨尔县| 依安县| 玉屏| 周宁县| 芒康县| 潞城市| 莱芜市| 海原县| 丰城市| 石阡县| 兴隆县| 桐柏县| 中牟县| 包头市| 阿拉善左旗| 灌阳县| 信宜市|