为不支持/实现的操作抛出Java的标准异常是什么?

Kri*_*mar 281 java

特别是,Exception在这些情况下是否使用了标准子类?

dfa*_*dfa 402

java.lang.UnsupportedOperationException

抛出以指示不支持所请求的操作.

  • @JarrodRoberson好的,在那种情况下,该语句应该从类文档中删除.其他包似乎也使用了该异常.我想如果Oracle这样做的话,那么我们也应如此.我将提交错误报告. (4认同)
  • 您可能想这样做以表明实现尚未到来: throw new java.lang.UnsupportedOperationException("Not Implemented Yet."); //待办事项实现 (3认同)
  • 请注意,这是一个 _unchecked_ `RuntimeException`。在编译期间,您将不会获得处理这些异常的反馈或帮助。如果这用于存根方法或正在进行的工作,您应该使用某种 _checked_ 异常。 (2认同)

ste*_*fen 212

区分您命名的两个案例:

  • #s 1或2在实践中是非常优选的.#3确实捕获了"不支持"和"未实现"之间的语义区别,但是拥有一个单独的类可以更容易地进行快速搜索,以验证您在提交之前没有忘记实现任何应该执行的操作. (3认同)
  • #3最适用于未实现的方法,因为它不需要第三方库或额外的工作,即使它是commons-lang. (3认同)

Ben*_*uer 23

如果在NetBeans中创建新的(尚未实现的)函数,则它将使用以下语句生成方法体:

throw new java.lang.UnsupportedOperationException("Not supported yet.");
Run Code Online (Sandbox Code Playgroud)

因此,我建议使用UnsupportedOperationException.


Gui*_*ume 11

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

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


Ali*_*ahi 8

下面的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");
   } 
}
Run Code Online (Sandbox Code Playgroud)