定义无参数异常:
class MyException(Exception):
pass
Run Code Online (Sandbox Code Playgroud)
提出时,之间有什么区别:
raise MyException
Run Code Online (Sandbox Code Playgroud)
和
raise MyException()
Run Code Online (Sandbox Code Playgroud)
在尝试时,我找不到 - 它只是一个重载的语法?
Ray*_*ger 107
简短的回答是两者raise MyException并raise MyException()做同样的事情.第一个表单auto实例化您的异常.
文档中的相关部分说," raise将第一个表达式计算为异常对象.它必须是BaseException的子类或实例.如果它是一个类,则在需要时通过实例化类来获取异常实例没有争论."
也就是说,即使语义相同,第一种形式在显微镜下更快,第二种形式更灵活(因为如果需要你可以传递参数).
大多数人在Python中使用的通常样式(即在标准库中,在流行的应用程序中,以及在许多书中)都是raise MyException在没有参数时使用.只有在需要传递一些参数时,人们才会直接实例化异常.例如: raise KeyError(badkey).
| 归档时间: |
|
| 查看次数: |
8739 次 |
| 最近记录: |