簡體   English   中英

嘗試捕獲塊給出編譯錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM