与Python异常相关的关键字:
关键字 关键字说明
raise 抛出/引发异常
try/except 捕获异常并处理
pass 忽略异常
as 定义异常实例(except IOError as e)
finally 无论是否出现异常,都执行的代码
else 如果try中的语句没有引发异常,则执行else中的语句
except 老版本的Python,except语句写作"except Exception, e",Python 2.6后应写作"except Exception as e"。
退出方式
python的程序有两中退出方式:os._exit(), sys.exit()。本文介绍这两种方式的区别和选择。
os._exit()会直接将python程序终止,之后的所有代码都不会继续执行。
sys.exit()会引发一个异常:SystemExit,如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获此异常的代码,那么这些代码还是会执行。
try语句子句形式表
except: 捕获所有异常
except Exception as e : 可以捕获除与程序退出sys.exit()相关之外的所有异常。
except name: 只捕获特定的异常
except name,value: 捕获异常和它的附加数据(将异常的信息保存到value,)
except (name1,name2): 捕获任何列出的异常
else: 如果没有异常
finally: 总是执行
示例:
try: 1:如果x没有异常,执行z,i
x 2:如果x有异常, 一:如果except捕捉到异常则执行y,i
except(name): 二:没捕捉到,执行i,然后返回内置异常处理
y
else:
z
finally:
i
except
而不带任何异常类型:
try:
do something
#会捕获所有异常,包括键盘中断和程序退出请求(用sys.exit()就无法退出程序了,因为异常被捕获了),因此慎用
except:
#handle except
# 采用traceback(跟踪)模块查看异常
traceback.print_exc()
finally:
# 采用sys模块回溯最后的异常
# import sys
#sys.exc_info()的返回值是一个tuple, (type, value/message, traceback)
tp,val,td = sys.exc_info()
参考
Python中的traceback模块