tam*_*mil 6 python exception python-2.7
我对Python 2.7中的try异常用法感到困惑。
try:
raise valueError("sample value error")
except Exception as e:
print str(e)
try:
raise valueError("sample value error")
except Exception,exception:
print str(exception)
try:
raise valueError("sample value error")
except exception:
print str(exception)
try:
raise valueError("sample value error")
except Exception:
print str(Exception) # it prints only the object reference
Run Code Online (Sandbox Code Playgroud)
可以帮助我理解上述用法吗?
一些概念可帮助您了解变体的替代变体之间的区别except:
except Exception, e –这是一个较旧的变体,现已弃用,类似于 except Exception as eexcept Exception as e–捕获类型Exception(或任何子类)的异常并将其存储在变量中,e以进行进一步处理,消息传递或类似操作except Exception–捕获类型Exception(或任何子类)的异常,但忽略异常中提供的值/信息except e –给我一个编译错误,不确定是否与python版本有关,但如果这样,则应该/将意味着您不在乎异常的类型,而是希望访问其中的信息except –捕获任何异常,并忽略异常信息使用什么取决于许多因素,但是如果您除例外情况下不需要提供的信息,则无需提供变量来捕获此信息。
关于Exception捕获的类型,请注意捕获准确的异常类型。如果您正在编写一个通用的文章,那么使用可能是正确的except Exception,但是在示例中,您给出的情况我将选择except ValueError直接使用。这将允许在代码的另一级别正确处理潜在的其他异常。关键是,不要捕获尚未准备好处理的异常。
如果需要,您可以在官方文档中阅读有关python 2.7异常处理或可用的python 2.7异常的更多信息。
小智 6
对于 Python 3(也适用于 Python 2.7):
try:
raise ValueError("sample value error")
except Exception as e:
print(e)
Run Code Online (Sandbox Code Playgroud)
对于 Python 2(不适用于 Python 3):
try:
raise ValueError("sample value error")
except Exception as e:
print(e)
Run Code Online (Sandbox Code Playgroud)
Mat*_*nez -1
使用格式
try:
raise ValueError("sample value error")
except Exception, e:
print e
Run Code Online (Sandbox Code Playgroud)