Python内置异常使用

时间:2013-12-15 18:51:33

标签: python exception

我相信你很清楚,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可能只是正确的答案,但我很好奇是否有更精确的内容,当我浏览文档时,我可能无法看到与之相关的内容。

1 个答案:

答案 0 :(得分:6)

对我来说unrelated instance听起来好像你想对错误类型的实例做些什么。

如何选择TypeError

  

将操作或函数应用于对象时引发   不合适的类型关联值是一个提供详细信息的字符串   关于类型不匹配。

Source

根据您的评论编辑:

Documentation说:

  

ValueError当内置操作或函数收到时引发   具有正确类型但价值不合适的参数,以及   情况不是由更精确的例外描述的,例如   IndexError。

这是正确的类型 - 正如您在评论中所述,但它的价值不合适。情况不能由IndexError =>描述。我要去ValueError