Python異常處理總結


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()將同樣的輸出獲取為字符串。你可以向這些函數傳遞各種各樣的參數來限制輸出,或者重新打印到像文件類型的對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM