异常相关
捕获异常:
try:
except:
except name:
except name, value:
except (name1, name2):
except (name1, name2), value:
except name4 as X:
else:
finally:
raise
raise <instance>
raise <class>
用户自定义异常: class Bad(Exception):.....
Exception超类 / except基类即可捕获到其所有子类
class MyBad(Exception):
def __str__(self):
return '定制的打印消息'
>>> try:
... raise MyBad()
... except MyBad as x:
... print x
定制的打印消息
关于sys.exc_info:允许一个异常处理器获取对最近引发的异常的访问
try:
......
except:
eg:
>>> try:
... int('a')
... except:
... sys.exc_info()
...
(<type 'exceptions.ValueError'>, ValueError("invalid literal for int() with base 10: 'a'",), <traceback object at 0x10a7a6bd8>)
采用traceback(跟踪)模块查看异常:
>>> import traceback
>>>
>>> try:
... int('a')
... except:
... traceback.print_exc()
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError: invalid literal for int() with base 10: 'a'
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--
+--