我想重現InterruptedException的行爲的一部分,但我不明白它是如何工作...Java自定義異常
所以我有這樣的代碼:
public static void main(String [] args){
try{
}catch(InterruptedException ie){
}
}
當我嘗試編譯我得到
Unreachable catch block for InterruptedException. This exception is never thrown from the try statement body
我做了一個自定義異常這是不是一個真正的異常,因爲它沒有延伸異常......這個編譯器錯誤
class MyException extends Throwable{
}
public static void main(String [] args){
try{
}catch(MyException ie){
}
}
這顯示了相同的編譯器錯誤
Unreachable catch block for MyException. This exception is never thrown from the try statement body
然後我做了這個
public static void main(String [] args){
try{
throw new MyException();
} catch(MyException e){
e.printStackTrace();
}
try{
throw new InterruptedException();
} catch(InterruptedException e){
e.printStackTrace();
}
}
且二者編譯罰款。
但現在到了棘手的部分..
public static void main(String [] args){
try{
throw new MyException();
} catch(Exception e){
e.printStackTrace();
} catch(MyException e){
e.printStackTrace();
}
try{
throw new InterruptedException();
} catch(Exception e){
e.printStackTrace();
} catch(InterruptedException e){
e.printStackTrace();
}
}
編譯器說
Unreachable catch block for InterruptedException. It is already handled by the catch block for Exception
你能告訴我怎麼InterruptedException的顯示InterruptedException的了「無法到達catch塊。這個異常是永遠不會從拋嘗試聲明體「編譯器錯誤,並在同一時間擴展異常,因爲當我擴展異常我的自定義異常不顯示此編譯器錯誤
作爲一個例子:
class MyException extends Exception{}
public static void main(String [] args){
try{
}catch(MyException me){
}
}
此代碼不拋出任何編譯器錯誤
但下面的代碼確實
class MyException extends Throwable{}
public static void main(String [] args){
try{
}catch(MyException me){
}
}
錯誤消息說,這一切:「這已經是由異常的catch塊處理「。根據定義,抓住每個異常的東西都會捕獲InterruptedException。 –
我在問題的結尾做了一個錯誤。我想知道如何InterruptedException擴展異常,它顯示了一個編譯器錯誤,當它沒有在try體內拋出,因爲當我擴展異常我的自定義異常不會顯示此編譯器錯誤 – Mike
編輯你的問題和清除mae。我不明白你的意思。 –