Is there anything like .NET's NotImplementedException in Java?

后端 未结 5 802
北海茫月
北海茫月 2020-12-02 04:23

Is there anything like .NET\'s NotImplementedException in Java?

5条回答
  •  醉话见心
    2020-12-02 05:03

    As mentioned, the JDK does not have a close match. However, my team occasionally has a use for such an exception as well. We could have gone with UnsupportedOperationException as suggested by other answers, but we prefer a custom exception class in our base library that has deprecated constructors:

    public class NotYetImplementedException extends RuntimeException
    {
        /**
         * @deprecated Deprecated to remind you to implement the corresponding code
         *             before releasing the software.
         */
        @Deprecated
        public NotYetImplementedException()
        {
        }
    
        /**
         * @deprecated Deprecated to remind you to implement the corresponding code
         *             before releasing the software.
         */
        @Deprecated
        public NotYetImplementedException(String message)
        {
            super(message);
        }
    }
    

    This approach has the following benefits:

    1. When readers see NotYetImplementedException, they know that an implementation was planned and was either forgotten or is still in progress, whereas UnsupportedOperationException says (in line with collection contracts) that something will never be implemented. That's why we have the word "yet" in the class name. Also, an IDE can easily list the call sites.
    2. With the deprecation warning at each call site, your IDE and static code analysis tool can remind you where you still have to implement something. (This use of deprecation may feel wrong to some, but in fact deprecation is not limited to announcing removal.)
    3. The constructors are deprecated, not the class. This way, you only get a deprecation warning inside the method that needs implementing, not at the import line (JDK 9 fixed this, though).

提交回复
热议问题