抛出异常时非法开始表达?

时间:2016-10-27 08:09:24

标签: java exception switch-statement custom-exceptions throws

我在代码的这一部分中不断收到错误表达错误。

switch(length) {
    case 1: if(message.equalsIgnoreCase("End")){    
        throws new AnotherException("Stop",true);
    } else {
        throws new AnotherException("Continue",false); 
    } 
    break;
}

特别是如果我添加

throw new AnotherException

有人可以解释导致此错误的原因吗?感谢。

3 个答案:

答案 0 :(得分:0)

您需要将关键字throws更改为throw

在抛出异常时,使用throw并在方法签名中使用throws来表示该方法的预期异常。

throws new AnotherException("Continue",false);更改为throw new AnotherException("Continue",false);

答案 1 :(得分:0)

各种错误:

  • 您的方法必须使用throws AnotherException
  • 处理异常
  • 使用throw代替throws
  • break语句是无法访问的代码,并且不会允许编译,因为if的双方都会解决投掷Exception

所以你的代码必须如下:

public static void main(String[] args) throws AnotherException {
    String message = "End";
    int length = 1;
    switch (length) {
    case 1:
        if (message.equalsIgnoreCase("End")) {
            throw new AnotherException("Stop", true);
        } else {
            throw new AnotherException("Continue", false);
        }
    }
}

答案 2 :(得分:-1)

使用throw而不是throws。抛出用于声明方法头之后抛出异常的可能性。

yourMethod(...) throws AnotherException {
    //stuff....

    switch(length)
    {
        case 1: if(message.equalsIgnoreCase("End")){    
                    throw new AnotherException("Stop",true);
                }
                else{
                    throw new   AnotherException("Continue",false); 
                } break;

    //stuff...
}