【问题标题】:What is the standard exception to throw in Java for not supported/implemented operations?对于不支持/未实现的操作,在 Java 中抛出的标准异常是什么?
【发布时间】:2010-10-24 04:03:21
【问题描述】:

具体来说,在这些情况下是否使用了标准的Exception 子类?

【问题讨论】:

  • 当一个类没有实现某个方法,而子类可能实现的时候,是否适合使用?换句话说,在非抽象类中有一个抽象方法。
  • @SergeyOrshanskiy 当您需要创建一个实现接口的匿名类以实例化成员变量但您不希望它时,这很有用,具体取决于您构造对象的方式使用。如果您将其设置为 null 并且您不小心使用了它(或其他人使用了它),您将得到 NullPointerExceptions 在这种情况下不如 UnsupportedOperationExceptions 明显。只是一个例子。

标签: java


【解决方案1】:

java.lang.UnsupportedOperationException

抛出表示不支持请求的操作。

【讨论】:

  • @JarrodRoberson 好的,在这种情况下,确实应该从类文档中删除该语句。其他软件包似乎确实使用了该异常。我想如果甲骨文这样做,那么我们也应该这样做。我会提交错误报告。
  • 请注意这是一个未选中 RuntimeException。在编译期间处理这些异常时,您不会得到任何反馈或帮助。如果这用于存根方法或正在进行的工作,则应使用某种 checked 异常。
【解决方案2】:

区分你命名的两种情况:

【讨论】:

  • 我同意这个,因为这对我来说似乎是合理的。 Exception 指示的“Yet”或“never”给出了如何对此做出反应的想法。
  • #s 1 或 2 在实践中是非常可取的。 #3 确实捕获了“不支持”和“未实现”之间的语义区别,但是拥有一个单独的类可以更轻松地进行快速搜索,以验证您在提交之前没有忘记实现任何您应该实现的东西。
  • #3 最适合未实现的方法,因为它不需要第三方库或额外的工作,即使它是 commons-lang。
【解决方案3】:

如果您在NetBeans 中创建一个新的(尚未实现的)函数,那么它会生成一个带有以下语句的方法体:

throw new java.lang.UnsupportedOperationException("Not supported yet.");

因此,我建议使用UnsupportedOperationException

【讨论】:

    【解决方案4】:

    如果您想要更多粒度和更好的描述,您可以使用 commons-lang 中的 NotImplementedException

    警告:仅在 2.6 版之前和 3.2 版之后可用。

    【讨论】:

      【解决方案5】:

      下面的Calculator 示例类显示了区别

      public class Calculator() {
      
       int add(int a , int b){
          return a+b;
        }
      
        int dived(int a , int b){
              if ( b == 0 ) {
                 throw new UnsupportedOperationException("I can not dived by zero, 
                               not now not for the rest of my life!")
              }else{
                return a/b;
             }
         }
      
         int multiple(int a , int b){
            //NotImplementedException from apache or some custom excpetion
            throw new NotImplementedException("Will be implement in release 3.5");
         } 
      }
      

      【讨论】:

        猜你喜欢
        • 2014-03-18
        • 2011-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多