Python異常處理流程如下:
#!/usr/bin/python #-*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') def test1(): try: print('In try.') raise GeneratorExit raise FloatingPointError #raise Exception('hehe') #return 'try' except GeneratorExit as e: print eexcept FloatingPointError: print('In FloatingPointError') except Exception: print('In except') #return 'exception' else: print('In else') return 'else' finally: print('In finally') #return 'finally' print(test1())
1. except語句
用於捕捉發生的錯誤,except X語句要放在except之前,否則except X語句將無法執行。
2. else語句
如果try中沒有發生異常,將會執行else語句
3. finally語句
finally語句在程序返回之前執行,也就是說,它總會執行。
4. return
如果finally中有return語句,則執行finally中的return語句返回;如果finally中沒有return語句,則返回到轉入finally之前的代碼段中返回。
5. 打印異常信息
def Mysql_select(db_host,sql): try: cnx = pymysql.connect(host='192.168.1.15',port= 3306,user = 'root',passwd='123123',db='test',timeout=5) # except TypeError: # print 'In typeerror' except Exception,e: print repr(e)
1、str(e)
返回字符串類型,只給出異常信息,不包括異常信息的類型,如1/0的異常信息
‘__init__() got an unexpected keyword argument 'timeout'’
2、repr(e)
給出較全的異常信息,包括異常信息的類型,如1/0的異常信息
TypeError("__init__() got an unexpected keyword argument 'timeout'",)
3、e.message
獲得的信息同str(e)
4、采用traceback模塊
需要導入traceback模塊,此時獲取的信息最全,與python命令行運行程序出現錯誤信息一致。使用traceback.print_exc()打印異常信息到標准錯誤,就像沒有獲取一樣,或者使用traceback.format_exc()將同樣的輸出獲取為字符串。你可以向這些函數傳遞各種各樣的參數來限制輸出,或者重新打印到像文件類型的對象。