这是简单的代码:
import sys
class EmptyArgs(StandardError):
pass
if __name__ == "__main__":
#first way to raise exception
if len(sys.argv) == 1:
raise EmptyArgs
#second way to raise exception
if len(sys.argv) == 1:
raise EmptyArgs()
Run Code Online (Sandbox Code Playgroud)
哪种方式"更"正确?两者都有效.
注意:在我的实际代码中,异常与我声明的完全相同:没有消息和参数.
Mar*_*ers 27
两者都是正确的; 后一种形式让你为你的例外附加参数:
if len(sys.argv) == 1:
raise EmptyArgs('Specify at least 1 argument')
Run Code Online (Sandbox Code Playgroud)
您还可以将参数作为第二个值传递给raise语句中的元组:
if len(sys.argv) == 1:
raise EmptyArgs, ('Specify at least 1 argument',)
Run Code Online (Sandbox Code Playgroud)
但是单个非元组值也可以工作,并且被视为单个参数:
if len(sys.argv) == 1:
raise EmptyArgs, 'Specify at least 1 argument'
Run Code Online (Sandbox Code Playgroud)
和第三个值raise
让你指定一个备用回溯,然后使用它来代替为代码中的当前位置生成的回溯:
if len(sys.argv) == 1:
raise EmptyArgs, ('Specify at least 1 argument',), traceback_object
Run Code Online (Sandbox Code Playgroud)
请注意,当您为异常使用参数时,Python样式指南PEP 8更喜欢您提供异常实例,而不是类:
在引发异常时,请使用
raise ValueError('message')
而不是旧形式raise ValueError, 'message'
.使用paren-using表单是首选,因为当异常参数很长或包含字符串格式时,由于包含括号,您不需要使用行继续符.旧的表单将在Python 3中删除.
Python 3将不再支持该表单.
归档时间: |
|
查看次数: |
7737 次 |
最近记录: |