Fab*_*els 12 python arguments exception raise
我想知道关于在没有参数的情况下引发异常的最佳实践.在官方python文档中,您可以看到:
try:
raise KeyboardInterrupt
Run Code Online (Sandbox Code Playgroud)
(http://docs.python.org/tutorial/errors.html第8.6章)
在一些不同的代码中,比如Django或Google代码,你可以看到:
def AuthenticateAndRun(self, username, password, args):
raise NotImplementedError()
Run Code Online (Sandbox Code Playgroud)
(http://code.google.com/p/neatx/source/browse/trunk/neatx/lib/auth.py)
在没有参数的情况下,异常是在被提升之前实例化的.没有参数实例化异常的目的是什么?什么时候应该使用第一种情况或第二种情况?
在此先感谢Fabien
您可以使用任何您喜欢的形式。没有真正的区别,两者在 Python 2 和 3 中都是合法的。Python 风格指南没有指定推荐哪一个。
关于“类形式”支持的更多信息:
try:
raise KeyboardInterrupt
Run Code Online (Sandbox Code Playgroud)
这种形式在 Python 2 和 3 中都是完全合法的。摘自pep-3109:
raise EXCEPTION 用于引发新的异常。这种形式有两个子变体: EXCEPTION 可能是一个异常类或一个异常类的实例;有效的异常类是 BaseException 及其子类 [5]。如果 EXCEPTION 是一个子类,它将在不带参数的情况下被调用以获取异常实例。
它也在Python 文档中进行了描述:
... 如果是类,则在需要时通过实例化不带参数的类来获取异常实例。
引发异常类而不是异常实例是不推荐使用的语法,不应在新代码中使用。
raise Exception, "This is not how to raise an exception..."
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3782 次 |
| 最近记录: |