首先,无论做什么都不会返回结果和错误消息。这是处理错误的一种非常糟糕的方法,并且会引起您无尽的头痛。 如果您需要指出错误,则总是引发异常 。
除非有必要,否则我通常会避免引发错误。在您的示例中,实际上并不需要抛出错误。将一个空列表与一个非空列表相交不是一个错误。结果只是空列表,这是正确的。但是,假设您要处理其他情况。例如,如果该方法具有非列表类型。在这种情况下,最好提出一个例外。没什么可害怕的。
我的建议是查看类似功能的Python库,并了解Python如何处理这些特殊情况。例如看一下集合中的交集方法,它往往是宽容的。在这里,我试图将一个空集与一个空列表相交:
>>> b = []>>> a = set()>>> a.intersection(b)set([])>>> b = [1, 2]>>> a = set([1, 3])>>> a.intersection(b)set([1])
仅在需要时抛出错误:
>>> b = 1>>> a.intersection(b)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: 'int' object is not iterable
当然,在某些情况下,成功或失败返回True或False可能会很好。但是保持一致非常重要。该函数应始终返回相同的类型或结构。具有可以返回列表或布尔值的函数非常令人困惑。或返回相同的类型,但是在发生错误的情况下此值的含义可以不同。
编辑:
OP说:
我想返回一些内容以指示参数不正确。
没有什么比错误更能说明错误了。如果要指示参数不正确,请使用异常并输入有用的错误消息。在这种情况下返回结果只是令人困惑。在其他情况下,您可能希望指示什么都没有发生,但这不是错误。例如,如果您有一种方法可以从表中删除条目,而请求删除的条目不存在。在这种情况下,在成功或失败时仅返回True或False可能会很好。这取决于应用程序和预期的行为
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)