2012-11-27 299 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(); 
    }