我有一个返回字符串的静态方法,但如果传入的字符串与几个单词之一不匹配,我想抛出异常。下面的代码只是我正在尝试做的事情的示例,但我在抛出异常的那一行不断收到“无法从静态上下文中引用的非静态变量”消息。基本上,getMsg 的返回值必须有效,否则程序无法继续,所以我需要一种方法来捕获它。
public static String getMsg(String input) throws UnknownInputException{
if (input.equals("A")){
return "key for A";
}
throw new UnknownInputException("Some Message");
return "unknownInput";
最佳答案
问题是因为 UnknownInputException
可能是一个嵌套类,如果你用 new
运算符实例化它,作为一个嵌套类,它应该可以访问“父”对象——该对象不存在,因为该类是在静态上下文中实例化的。有关这方面的更多信息,请参阅 Static method returning inner class .
一个可能的解决方案是将 UnknownInputException
声明为 static
,如下所示:
private static class UnknownInputException extends Exception { ... }
当然,您将无法访问此类中的任何实例(非静态)方法和/或字段,但这在您的情况下可能不是问题(尤其是在 Exception 类的情况下)。
此外,在 throw
行之后的 return
ing 值是不必要的,因为执行永远不会到达该行。
关于java - 返回值的静态方法可以抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11312518/