gpt4 book ai didi

java - 返回值的静态方法可以抛出异常吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:18:29 26 4
gpt4 key购买 nike

我有一个返回字符串的静态方法,但如果传入的字符串与几个单词之一不匹配,我想抛出异常。下面的代码只是我正在尝试做的事情的示例,但我在抛出异常的那一行不断收到“无法从静态上下文中引用的非静态变量”消息。基本上,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 行之后的 returning 值是不必要的,因为执行永远不会到达该行。

关于java - 返回值的静态方法可以抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11312518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com