python try异常&退出


与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模块

请使用浏览器的分享功能分享到微信等