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

标签 java

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

相关文章:

Java 或 Spring : two-way encryption with salt?

java - 通过 toStrict() 将 HttpEntity 转换为 String 后导致延迟的原因

java - 远程运行Hadoop应用程序

java - 对于 contains 我们是否应该覆盖 java 中 hashset 的 hashcode 和 equals

java - 使用过滤器从 map 中删除元素

java - springboot 自动关机并自动重启。

java - Orika:如何映射评估条件的 boolean 值

java - 如何制作 java 扫描仪的副本?

java - 在Android OpenGL中渲染简单的正方形

java - 使用 Jackson @JsonDeserializer 将一个自定义 Java 字段映射到多个 JSON 字段