“exception()”和“引发exception”没有括号有区别吗?
定义一个无参数的exception:
class myException(Exception): pass
当提出时,有什么区别:
raise myException
和
raise myException()
尝试时,我可以find没有 – 它只是一个重载语法?
简单的回答是, raise MyException
和raise MyException()
做同样的事情。 这第一个表单自动实例化你的exception。
文档中的相关部分表示:“ raise作为exception对象评估第一个expression式,它必须是一个子类或一个BaseException的实例,如果它是一个类,则需要时通过实例化类来获得exception实例没有论据“。
也就是说,即使语义相同,第一种forms在显微镜下速度更快,第二种forms更灵活(因为如果需要,可以传递参数)。
大多数人在Python中使用的通常风格(即在标准库,stream行应用程序和许多书中)是在没有参数的情况下使用raise MyException
。 当有些参数需要传递时,人们只是直接实例化exception。 例如: raise KeyError(badkey)
。
请查看文档6.9中的raise关键字。 提高声明
它正在创build一个myException的实例
- 嵌套Try / Catch块是一个坏主意吗?
- 我应该了解C ++中的结构化exception(SEH)?
- 简单的java正则expression式抛出illegalstateexception
- validation数据时抛出exception是好的还是坏的想法?
- java.util.AbstractList.add的UnsupportedOperationException
- 错误:registry项'Software \ JavaSoft \ Java Runtime Environment'\ CurrentVersion'?
- Google C ++风格指南的无例外规则; STL?
- 是否有一个原因Image.FromFile抛出一个无效的图像格式的OutOfMemoryException?
- c ++exception:抛出std :: string