返回值的静态方法是否会抛出异常?

use*_*644 7 java

我有一个返回String的静态方法,但是如果传入的字符串与几个单词中的一个不匹配,我想抛出异常.下面的代码只是我想要做的一个示例,但我一直得到"非静态变量,这不能从静态上下文引用"消息,我抛出异常的行.基本上,getMsg的返回值必须是有效的,否则程序无法继续,所以我需要一种方法来捕获它.

public static String getMsg(String input) throws UnknownInputException{
      if (input.equals("A")){
           return "key for A";
      }
      throw new UnknownInputException("Some Message");
      return "unknownInput";
Run Code Online (Sandbox Code Playgroud)

dne*_*net 5

问题是由这个事实造成的,那UnknownInputException可能是一个嵌套类,如果你用new运算符实例化它,作为一个嵌套类,它应该可以访问一个"父"对象 - 这个对象实例化后就不存在了在静态环境中.有关此内容的更多信息,请参阅返回内部类的静态方法.

一种可能的解决办法是宣布UnknownInputExceptionstatic这样的:

private static class UnknownInputException extends Exception { ... }
Run Code Online (Sandbox Code Playgroud)

当然,您将无法访问此类中的任何实例(非静态)方法和/或字段,但在您的情况下这可能不是问题(特别是在Exception类的情况下).

此外,行return之后的值throw是不必要的,因为执行永远不会到达该行.