Python新手常见问题三:在异常处理时错误的使用参数
在异常处理时错误的使用参数
假设你有如下的代码:
<pre class="brush:php;toolbar:false">>>> try: ... l = ["a", "b"] ... int(l[2]) ... except ValueError, IndexError: # 想捕捉两个异常 ... pass ... Traceback (most recent call last): File "<stdin>", line 3, in <module> IndexError: list index out of range</pre>这里的问题在于except语句不会像这样去接受一系列的异常。并且,在Python 2.x里面,语法except Exception, e是用来将异常和这个可选的参数绑定起来(即这里的e),以用来在后面查看的。因此,在上面的代码中,IndexError异常不会被except语句捕捉到;而最终ValueError这个异常被绑定在了一个叫做IndexError的参数上。
相关推荐:《Python视频教程》
在except语句中捕捉多个异常的正确做法是将所有想要捕捉的异常放在一个元组(tuple)里并作为第一个参数给except语句。并且,为移植性考虑,使用as关键字,因为Python 2和Python 3都支持这样的语法,例如:
<pre class="brush:php;toolbar:false">>>> try: ... l = ["a", "b"] ... int(l[2]) ... except (ValueError, IndexError) as e: ... pass ... >>></pre>相关推荐:
Python新手常见问题二:不正确的使用类变量
您可能感兴趣的文章:
Python新手常见问题三:在异常处理时错误的使用参数
php中的异常机制理解分析
Python异常处理知识点汇总,五分钟就能学会
Python新手常见问题十:__del__方法
PHP5 的异常处理、错误的抛出及回调函数等
Python新手常见问题四:误用Python作用域的规则
Golang错误和异常处理的正确姿势
设计迷踪:给JAVA设计开发新手的一些建议和意见(二)
JAVA中的异常与错误处理详解
Python traceback模块:获取异常信息