我在查看 Python 的内置异常,并想知道 Java 中 UnsupportedOperationException
最接近的 Python 异常是什么。虽然 NotImplementedError
很接近,但似乎含义略有不同。我应该使用RuntimeError
还是实现自己的 Exception
?
我在查看 Python 的内置异常,并想知道 Java 中 UnsupportedOperationException
最接近的 Python 异常是什么。虽然 NotImplementedError
很接近,但似乎含义略有不同。我应该使用RuntimeError
还是实现自己的 Exception
?
最接近的相当于是不实现不支持的方法。如果您尝试使用不存在的方法,则会出现AttributeError
异常。
raise <some_exception>
,在异常信息中解释为什么该方法不应被实现/支持。我担心如果我不这样做,将来可能会有人尝试实现该方法而不理解为什么它最初没有被实现。 - erwamanAttributeError
异常。或者如果您愿意的话,可以引发自己定义的自定义异常类型。 - dimo414Collections.unmodifiableSet
中有一个add
方法会抛出UnsupportedOperationException
,而Python的frozenset
根本没有add
方法。我们这里没有严格的“接口”,所以我们不需要一堆虚拟方法来匹配接口定义。 - user2357112@ABC.abstractmethod
,你/我们在Python中会遇到一些严格性。如果继承自父类C
的类没有实现抽象方法M
,则会出现错误:TypeError: Can't instantiate abstract class X with abstract methods M
。 - dzieciou我不懂Java,但看了你提供的链接和一些在线示例后,我认为没有单一的等效项。这是异常类型的相当广泛的描述。
如果操作由于操作数类型错误而不受支持,则应使用TypeError。如果它不受支持,因为值在某种程度上不兼容,则应使用ValueError。或者,如user2357112所指出的那样,您可以什么都不做,并在尝试访问不存在的方法时获得AttributeError。