我相信你很清楚,python和大多数编程语言一样,附带built-in exceptions。我已经浏览了这个列表,并且不能推断哪个是合适的。当然我可以做出我自己的例外,但这是一个相当标准的错误,将被排除在外。
这是基于实例关系的错误。类的实例与其他实例的仅一些相关。可以根据不同的连接进行计算。如果尝试对不相关的实例进行计算,则此错误将为raise
。
class Foo:
def __init__(self,related=None):
'''related is a list of Foo instances'''
if related is not None:
self.related = related
else:
self.related = []
def compute(self,instance):
if instance in self.related:
#execute code
else:
raise SomeError("You cannot make a computation with an unrelated instance")
说实话,似乎ValueError
最有意义,因为价值是不允许的,但由于某些原因,这并不能完全适合我。没有关系的事实是这个错误的重要性,而不仅仅是不允许尝试的值这一事实。
我的逻辑是否有比ValueError更好的异常?
注意:我理解这个ValueError
可能只是正确的答案,但我很好奇是否有更精确的内容,当我浏览文档时,我可能无法看到与之相关的内容。
答案 0 :(得分:6)
对我来说unrelated instance
听起来好像你想对错误类型的实例做些什么。
如何选择TypeError
?
将操作或函数应用于对象时引发 不合适的类型关联值是一个提供详细信息的字符串 关于类型不匹配。
根据您的评论编辑:
ValueError当内置操作或函数收到时引发 具有正确类型但价值不合适的参数,以及 情况不是由更精确的例外描述的,例如 IndexError。
这是正确的类型 - 正如您在评论中所述,但它的价值不合适。情况不能由IndexError
=>描述。我要去ValueError
。