两者都是正确的;后一种形式让您将参数附加到您的异常:
if len(sys.argv) == 1:
raise EmptyArgs('Specify at least 1 argument')
您还可以将参数作为第二个值作为 raise 语句中的元组传递:
if len(sys.argv) == 1:
raise EmptyArgs, ('Specify at least 1 argument',)
但是单个非元组值也可以工作,并被视为单个参数:
if len(sys.argv) == 1:
raise EmptyArgs, 'Specify at least 1 argument'
第三个值raise
让您指定备用回溯,然后使用它代替将为代码中的当前位置生成的回溯:
if len(sys.argv) == 1:
raise EmptyArgs, ('Specify at least 1 argument',), traceback_object
请参阅raise
声明的文档
请注意,当您为异常使用参数时,Python 样式指南 PEP 8更喜欢您提供异常实例,而不是类:
引发异常时,请使用raise ValueError('message')
而不是旧形式raise ValueError, 'message'
。
首选使用括号的形式,因为当异常参数很长或包含字符串格式时,由于包含括号,您不需要使用行继续符。旧形式将在 Python 3 中删除。
Python 3 将不再支持这种形式。