为python函数参数引发什么异常

时间:2013-08-01 03:18:49

标签: python exception

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

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

def create_form(field_types, field_discriptions):
    pass

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我会使用assert并提出AssertionError

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

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

答案 2 :(得分:1)

抛出异常作为函数中的第一件事。功能关键错误不应该任何而不确保它可以做它想做的事情或它可能产生不良影响

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

  

考虑放置断言的地方:

     

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

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

如果你想使用一般异常,Blender 建议的ValueError是正确的类型,但这通常是为较大的问题保留的,并且没那么有帮助。

供快速参考:

  

“ValueError异常

     

当内置操作或函数接收到参数时引发   具有正确的类型但价值不合适,情况如此   没有被更准确的异常描述,例如IndexError。“ - Python docs