JAVA「throw」的使用

public class Throw1{

public static void main(String[] args){

tryToCalculate(10,0);

tryToCalculate(10,2);

}

public static void tryToCalculate(int x,int y){

if(y==0){

try{

throw new Exception("除數不得為零");

}catch(Exception e){ //第11行

System.out.println(e.toString());

} //第13行

}else{

System.out.println("結果為:"+x/y);

}

}

}

=================================================

請教我上面程式中的第11行到第13行這邊的改寫方式

改成

catch(Exception e){

throw e;

}

課本只寫兩句話:

若將範例程式的第11~13行改寫成

catch(Exception e){

throw e;

}

必需要有另一個程式來呼叫 main 方法,並且在該程式中使用「try-catch」來處理例外

我看不懂它的意思

請教我改寫的方式

Update:

新人新希望 ( 初學者 5 級 ):

想請問一下為什麼你會覺得程式要改成這樣?0.0

我在看到書上改寫的說明時

就傻傻的照它說的改了.....

結果當然是編譯錯誤...

如果是像你這樣改不是會動到11~13行以外的部份嗎?

不是只單純的改一下11~13行就好了 0.0

還是說如果想改成課本要求的,就必須要動其他的部份?

Update 2:

我所指的11~13行以外的部份是 throws

throws 和 throw不都是「丟」嗎

為什麼用 throw 時還要用 throws 包住它?

3 Answers

Rating
  • 1 decade ago
    Favorite Answer

    public class Throw1{

     public static void main( String[] args ) {

      try{

       throwTest();

      } catch( Exception e ){

       System.out.println( "由 main 中處理錯誤" );

      }

     }

     public static void throwTest() throws Exception {

      throw new Exception();

     }

    }

    宣告一丟出 Exception 的 method(如例中的 throwTest() ),並且在其他地方使用此 method 時(如例中的 main( String[] args ) ),以try-catch 語法來處理。我想這就是您課本中要您練習的部分。

    您提的 throws、throw、try-catch 等等,相信您在以下 url 可以找到滿意的標準答案,若您依舊有問題,我們再討論。

    http://java.sun.com/docs/books/tutorial/essential/...

    2008-04-02 02:39:32 補充:

    因字數限制,故將補充貼於

    http://tw.myblog.yahoo.com/jw!UTViSXebCB4YjdqIuON7...

  • 1 decade ago

    public class Throw1{

    public static void main(String[] args){

    try{ //用try catch 包住可能發生例外的地方

    tryToCalculate(10,0); //呼叫tryToCalcuate方法

    }

    catch(Exception e){

    System.out.println(e.getMessage());

    }

    try{//用try catch 包住可能發生例外的地方

    tryToCalculate(10,2);

    }

    catch(Exception e){

    System.out.println(e.getMessage());

    }

    }

    public static void tryToCalculate(int x,int y) throws Exception {//這個方法丟出(throws)一個例外,告知交由呼叫他的人去處理 (呼叫他的人用try-catch去處理)

    if(y==0){//如果底數為0為無理數,所以要拋出例外

    throw new Exception("除數不得為零"); //啟動例外 Exception

    } //第13行

    else{

    System.out.println("結果為:"+x/y);

    }

    }

    }

    throws就是告知要來呼叫的人自己處理例外

    throw就是啟動例外

    呼叫的人用try- catch去處理(利用throw啟動的)例外

    課本那樣寫是被呼叫的方法,自己去處理例外

    如果被呼叫的方法懶的處理,就用throws跟throw,交由呼叫他的人處裡(就是改寫後的程式)

  • 1 decade ago

    throw 是丟的意思,專門丟Exception(例外)

    當一個method(方法),丟出例外或可能有例外時,有兩種解決方法..

    1. 把例外丟掉,所以在方法 後面加上 throws Exception如下:

    void myFunction() throws Exception{ ... }

    2. 把例外處理掉,就是用try{} catch(Exception e){}

    你的書應該是說,把例外處理掉,但是處理的方法是丟掉,所以..

    try{} catch(Exception e){throw e};

    這一行catch的用意是把抓到的Exception=e ,再把e丟掉!

    不過,Exception要丟出時的Class要先宣告才能throw new Exception

    除非你用的是RuntimeException就不用宣告!

    這宣告的部份可能就是你Compile錯誤的地方!

Still have questions? Get your answers by asking now.