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

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

我在包含上述代码的方法中得到编译错误,有没有办法在 else 块中抛出 InputMismatchException ?

4

5 回答 5

4

您需要使用new关键字:

throw new InputMismatchException();
于 2012-11-27T02:33:13.627 回答
1

“抛出”声明不会进入方法主体。如果您想简单地抛出异常,请将其声明如下:

    public void method() throws InputMismatchException{

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

这里不需要使用 try 语句。当您调用 method() 时,您将使用以下内容:

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

希望有帮助!

于 2012-11-27T02:32:22.487 回答
0

声明它所在的方法以引发异常。

因为OutputStream.close()throwsIOException你也需要抛出它:

void myMethod() throws InputMismatchException, IOException {
    // your code, except 
    throw new InputMismatchException();
}
于 2012-11-27T02:29:54.320 回答
0

当你抛出异常时,就不需要 try-catch-finally 了。当您捕获异常时,try catch finally 是必要的。尝试以下 -

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

    }
    else{
         throw new InputMismatchException() ;
    }
于 2012-11-27T02:31:07.177 回答
0

你想创建一个异常的实例然后抛出它。throws用作方法声明的一部分,而不是实际抛出异常。

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

    }
    else{
         throw new InputMismatchException();
    }
于 2012-11-27T02:33:02.427 回答