2014-03-19 20 views
1

這是我的代碼這裏使用了什麼「throws」子句,如果不使用,會怎樣?

static void tryit() throws Exception 
{ 
     System.out.println(10/0); 
} 

public static void main(String[] args) 
{ 
    try { 
     tryit(); 

    } catch (Exception e) { 
     System.out.println("Exception caught in main"); 
    } 
} 

這裏我是什麼徘徊,在這種代碼throws Exception究竟是什麼1號線?
即使我沒有使用還我得到了相同的輸出

輸出:異常夾在主

凡會有效嗎?這個代碼有必要嗎?

+0

感謝ü傢伙..有各種各樣的回答..特別感謝@Maroun更多信息 –

回答

0

這裏什麼是徘徊是,在此代碼的第1行「拋出異常」 究竟是什麼?

它賦予了函數的調用者責任,即這個方法可以拋出一個異常,你[調用者]必須處理它。

而且,就你而言,這是一個RuntimeException將從該方法拋出,因此,不需要用Exception聲明該方法。這就是爲什麼即使你刪除了拋出異常部分,它的工作原理。

如果該方法將拋出一個檢查異常,並且如果您不在方法本身內部處理它,那麼您已聲明在方法簽名中拋出該異常。

2

在這種情況下,您不需要throws Exception,因爲ArithmeticExceptionRuntimeException,編譯器不知道它會被拋出,因此它不會強制您處理它。請參閱:

enter image description here

案例,你應該做的,如果你有一個例外這不是一個運行例外,你不包圍可能拋出異常與試戴行趕上條款,那麼你將不得不宣佈該方法爲throws ThatException

0

「拋出」的方法的簽名是用來告知「父 方法/方法調用該函數」這個功能「可能」 拋出一個異常,而「父」方法/主叫應該處理它。是的,正如@maroun Maroun所說的那樣,「在目前的情況下,拋出是unncesssary」

0
in line 1 of this code "throws Exception" what exactly does? 

拋出關鍵字告訴方法具有特殊的條件拋出關鍵字編譯器,它是不會來處理例外。任何使用throws關鍵字來調用該方法的方法都有責任處理該異常。

在你的情況下,tryit()拋出異常,不處理異常情況。主要你調用了tryIt(),所以它是main的責任來處理tryIt()的unhandle異常拋出異常。

Where it will be effective? Is it necessary in this code? 

當您希望使用正確的try catch(檢查的異常類型)調用您的方法時,它非常有效。

這段代碼沒有必要,因爲在你的代碼中你正在得到java.lang.ArithmeticException異常:/由零異常是RuntimeException(未檢查類型)編譯器不會抱怨不處理它。

在檢查,未經檢查的異常見Checked and Unchecked Exception

相關問題