[英]try-catch block giving compilation error
我試圖在try-catch塊中添加一些代碼,但是在編譯時失敗,並且我沒有弄錯。
try
{
int x = 0;
int y = 5 / x;
}
catch (Exception e)
{
System.out.println("Exception");
}
catch (ArithmeticException ae)
{
System.out.println(" Arithmetic Exception");
}
System.out.println("finished");
有人可以幫忙嗎?
采用 :
try
{
int x = 0;
int y = 5 / x;
}
catch (ArithmeticException ae)
{
System.out.println(" Arithmetic Exception");
}
catch (Exception e)
{
System.out.println("Exception");
}
System.out.println("finished");
在處理異常時,必須在捕獲子類異常之后捕獲更廣泛的異常(超類異常,在您的情況下,Exception是ArthmeticException的超類)。 否則,異常將被較寬/父異常捕獲塊捕獲,並且后面的代碼將不可訪問。 因此它將無法編譯。
異常hierearchy說
ONCE YOU HAVE CAUGHT AN EXCEPTION IT NEEDS NOT TO BE CAUGHT AGAIN
因為您已經在第一個catch塊中捕獲了Exception
因此,您的下一個捕獲塊是沒有用的
您應該首先捕獲子類,然后為其余可能的其他異常捕獲父類Exception
嘗試這個
try
{
// your code throwing exception
}
catch (ArithmeticException ae)
{
// do something
}
catch (Exception e)
{
// do something
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.