我的猜測是,你試圖拋出一個異常的子類,而不是由該方法聲明作爲它可以拋出的異常類型。
以下示例適用
package test.example;
public class ExceptionTest {
public static void main(String[] args) throws Exception{
try {
int value = 1/0;
} catch (Exception e) {
System.out.println("woops the world is going to end");
throw e;
}
}
}
然而這個例子會給出一個錯誤。在第二個例子中,我簡單地捕捉異常不是RuntimeException的
package test.example;
public class ExceptionTest {
public static void main(String[] args) throws RuntimeException{
try {
int value = 1/0;
} catch (Exception e) {
System.out.println("woops the world is going to end");
throw e;
}
}
}
注意,它不會編譯,因爲我拋出的異常是一個未聲明的拋出,即使我做申報的RuntimeException。
是的異常是一個RuntimeException,但編譯器不知道。
只是想到了第三個工作實例來向你展示。這一個也適用,因爲你拋出相同的類型,你聲明。 (注意,唯一的變化是catch塊)
package test.example;
public class ExceptionTest {
public static void main(String[] args) throws RuntimeException{
try {
int value = 1/0;
} catch (RuntimeException e) {
System.out.println("woops the world is going to end");
throw e;
}
}
}
您需要了解所有這三個答案之間的差異
來源
2011-05-12 22:31:23
Wes
感謝所有的答案,代碼是一個線程,所以我不的run方法中認爲我可以拋出異常? – 2011-05-12 22:41:31
[Throw error to calling method!]可能的重複(http://stackoverflow.com/questions/5976764/throw-error-to-calling-method) – McDowell 2011-05-12 22:50:35
我不這麼認爲,但也許我錯了,我真的想知道的是爲什麼我需要圍繞「拋出異常」與try catch。拋出異常時,拋出異常不能拋出異常嗎?嘗試 { 拋出異常 } 趕上(例外E2) { ... } – 2011-05-12 22:57:35