2012-11-27 545 views
0
try { 
     if (x.length == Styles.size()) { 

     } 
     else{ 
      throws InputMismatchException ; 
     } 
    } finally { 
     OutputFileScanner.close(); 
    } 

我得到編譯錯誤的方法包含上面的代碼,有沒有什麼辦法拋出InputMismatchException在else塊?java捕捉異常

+0

這可能只是抱怨你沒有聲明自己的功能,可以投擲InputMismatchException時的。嘗試在函數定義的末尾添加「throws InputMismatchException」。 –

回答

4

您需要使用new關鍵字:

throw new InputMismatchException(); 
+1

所有這些「聲明'拋出''答案和一切,sheesh,我想我將不得不回答這一個。 InputMismatchException甚至不是一個檢查的異常,它是'RuntimeException'的一個子類。 +1 – Brian

+0

是的,因爲OP可能還沒有聲明它(或者至少_shouldnt_是),所以'RuntimeException'出來了。 – Reimeus

0

聲明它所在的方法拋出異常。

因爲OutputStream.close()拋出IOException你需要把那太:

void myMethod() throws InputMismatchException, IOException { 
    // your code, except 
    throw new InputMismatchException(); 
} 
0

當你拋出異常,那麼就沒有必要的try-catch-終於它。當你發現異常時,最後嘗試捕捉是必要的。請嘗試以下方法 -

if (x.length == Styles.size()) { 

    } 
    else{ 
     throw new InputMismatchException() ; 
    } 
+0

他需要關閉他的掃描儀,以防止資源泄漏,所以暗示他不需要這個是完全不正確的。 – Brian

+0

我在評論w.r.t.的異常處理。顯然他需要釋放資源。謝謝。 –

1

「throws」聲明不會進入方法主體。如果您想簡單地拋出異常,請將其聲明如下:

public void method() throws InputMismatchException{ 

    if(...) {... 
    OutputFileScanner.close(); 
    } 
    else{ 
     OutputFileScanner.close(); 
    throw new InputMismatchException("Uh oh"); 
     } 
    } 

這裏沒有必要使用try語句。當您調用方法()時,您將使用以下內容:

try{ 
    method(); 
} catch (InputMismatchException ime){ 
    //do what you want 
} 

希望幫助!

0

你想創建一個異常的實例然後拋出它。 throws被用作方法聲明的一部分,而不是實際拋出異常。

if (x.length == Styles.size()) { 

    } 
    else{ 
     throw new InputMismatchException(); 
    }