0

我现在正在创建一个包含两个列表的函数。我希望这两个列表大小相等。我试图弄清楚如果它们的大小不同,我应该抛出什么样的异常(或者如果我应该抛出异常)。我有点想说 ValueError 但这是一个实际上不属于任何单个值的检查。

为了清楚起见,这是我的函数存根。

def create_form(field_types, field_discriptions):
    pass
4

3 回答 3

1

您可以创建自己的异常子类,称为 ArraysNotEqualSizeException。可能有点矫枉过正,但它抓住了重点。

于 2013-08-01T03:22:19.977 回答
1

我会使用assert并提出一个AssertionError

assert len(field_types) == len(field_descriptions), "Helpful message"

否则,ValueError带消息似乎是最好的选择。

于 2013-08-01T03:23:52.197 回答
1

抛出异常作为函数中的第一件事。一个功能关键错误不应该做任何事情,除非它可以做它想做的事情,否则它可能会产生不良影响

这不是一个巨大的错误。你应该使用断言

考虑放置断言的地方:

检查参数类型、类或值检查数据结构不变量检查“不可能发生”的情况(列表中的重复项、相互矛盾的状态变量。)在调用函数后,确保其返回是合理的 - Python wiki

assert len(listone) == len(listtwo), 
    "the function cannot continue because\
     the two arguments passed are of invalid length"

ValueError如果您想使用通用异常, Blender 建议的a是正确的类型,但是这通常是为更大的问题保留的,并且不太有用。

快速参考:

“值错误

当内置操作或函数接收到具有正确类型但值不适当的参数时引发,并且这种情况没有由更精确的异常(如 IndexError)描述。” - Python 文档

于 2013-08-01T03:24:02.427 回答