Python内置异常使用

Rya*_*axe 6 python exception

我相信你很清楚,python和大多数编程语言一样,都带有内置异常.我已经浏览了这个列表,并且不能推断哪个是合适的.当然我可以做出我自己的例外,但这是一个相当标准的错误,将被排除在外.

这是基于实例关系的错误.类的实例与其他一些实例相关.可以根据不同的连接进行计算.raise如果尝试对不相关的实例进行计算,则此错误将为d.

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")
Run Code Online (Sandbox Code Playgroud)

我的想法

说实话,似乎ValueError最有意义,因为价值是不允许的,但由于某种原因,这并不能完全适合我.没有关系的事实是这个错误的重要性,而不仅仅是不允许尝试的值这一事实.

我的逻辑是否有比ValueError更好的异常?

注意:我知道这ValueError可能是正确的答案,但我很好奇是否有更精确的东西,当我浏览文档时,我可能无法看到它的连接.

Jan*_*cak 6

对我来说,unrelated instance听起来你想要对错误类型的实例做些什么.

那么选择TypeError呢?

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

资源

根据您的评论编辑:

文件说:

ValueError当内置操作或函数接收到具有正确类型但值不合适的参数的参数时引发,并且情况不会由更准确的异常(如IndexError)描述.

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