欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python獲取異常信息exc_info和print_exc的使用

 更新時(shí)間:2023年12月29日 09:22:05   作者:梯閱線(xiàn)條  
python通過(guò)sys.exc_info獲取異常信息,通過(guò)traceback.print_exc打印堆棧信息,包括錯(cuò)誤類(lèi)型和錯(cuò)誤位置等信息,本文就來(lái)介紹一下具體用法,感興趣的可以了解一下

1 python獲取異常信息exc_info和print_exc

python通過(guò)sys.exc_info獲取異常信息,通過(guò)traceback.print_exc打印堆棧信息,包括錯(cuò)誤類(lèi)型和錯(cuò)誤位置等信息。

1.1 異常不一定是錯(cuò)誤

所有錯(cuò)誤都是異常,但并非所有異常都是錯(cuò)誤。比如,有些異常表示警告(參考warnings模塊),有些異常是功能信號(hào)(比如,input函數(shù)從標(biāo)準(zhǔn)輸入流sys.stdin讀取輸入)。

用法

while True:
    try:
        ins=input('請(qǐng)輸入:')
    except EOFError as e:
        # except 代碼塊
        break
    else:
        print('你輸入的是:',ins)

描述

(1) 通過(guò)input循環(huán)獲取用戶(hù)輸入;

(2) 通過(guò)EOFError 作為功能信號(hào),觸發(fā)則退出輸入;

(3) 通過(guò)Ctrl+D(windows)或Ctrl+Z(Unix)觸發(fā)EOFError 異常;

示例

>>> import traceback
>>> while True:
    try:
        ins=input('請(qǐng)輸入:')
    except EOFError as e:
        # 通過(guò) Ctrl+D 或 Ctrl+Z 觸發(fā) EOFError
        print('遇到 Ctrl+D 或 Ctrl+Z,退出輸入')
        print(traceback.print_exc())
        break
    else:
        print('你輸入的是:',ins)

請(qǐng)輸入:梯閱線(xiàn)條
你輸入的是: 梯閱線(xiàn)條
請(qǐng)輸入:
遇到 Ctrl+D 或 Ctrl+Z,退出輸入
Traceback (most recent call last):
  File "<pyshell#58>", line 3, in <module>
EOFError: EOF when reading a line
None

1.2 異常條件語(yǔ)句和raise

python自定義異常也可用于觸發(fā)非錯(cuò)誤的情況,根據(jù)條件語(yǔ)句觸發(fā)raise異常。

用法

class FoundByExc(Exception):pass
def search_by_exc(strlist,target):
    if True:
        raise FoundByExc("xxx")
    else:
        return "xxx"

描述

搜索指定內(nèi)容時(shí)觸發(fā)異常。

(1) 自定義一個(gè)異常類(lèi);

(2) 條件成立,觸發(fā)異常;

示例

>>> class FoundByExc(Exception):pass

>>> def search_by_exc(strlist,target):
    for s in strlist:
        if s == target:
            raise FoundByExc("在{}找到'{}'".format(strlist,target))
        else:
            return "在{}未找到'{}'".format(strlist,target)

        
>>> def test_searchbyexc(strlist,target):
    try:
        sbe=search_by_exc(strlist,target)
    except FoundByExc as fbe:
        print(fbe)
    else:
        print(sbe)

>>> strlist=['梯閱線(xiàn)條','tyxt.work','9555']
>>> target1='梯閱線(xiàn)條';target2='tyxt'
>>> test_searchbyexc(strlist,target1)
在['梯閱線(xiàn)條', 'tyxt.work', '9555']找到'梯閱線(xiàn)條'
>>> test_searchbyexc(strlist,target2)
在['梯閱線(xiàn)條', 'tyxt.work', '9555']未找到'tyxt'

1.3 sys.exc_info獲取異常信息

python中空的except捕獲任何未被捕獲的異常,通過(guò)sys.exc_info獲取捕獲的實(shí)際異常。

用法

import sys
sys.exc_info()

描述

返回元組(type,value,traceback),

type:捕獲的異常類(lèi)型;

value:捕獲的異常類(lèi)的實(shí)例;

traceback:觸發(fā)異常的調(diào)用堆棧;

示例

>>> try:
    1+[]
except:
    print(sys.exc_info())

    
(<class 'TypeError'>, TypeError("unsupported operand type(s) for +: 'int' and 'list'"), <traceback object at 0x03EFEE40>)

1.4 traceback.print_exc打印異常堆棧

用法

import traceback
try:
    # try 代碼塊
except xxx:
    # except 代碼塊
    traceback.print_exc()

描述

當(dāng)Python程序發(fā)生異常時(shí),通過(guò)traceback.print_exc()獲取異常的詳細(xì)信息,包括異常類(lèi)型、異常值和異常發(fā)生的位置信息。

(1) 導(dǎo)入 traceback模塊;

(2) 在except處理器,調(diào)用traceback.print_exc()方法;

示例

>>> import traceback
>>> try:
    1+[]
except:
    traceback.print_exc()

    
Traceback (most recent call last):
  File "<pyshell#79>", line 2, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'

 到此這篇關(guān)于python獲取異常信息exc_info和print_exc的使用的文章就介紹到這了,更多相關(guān)python獲取異常信息 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析使用Python操作文件

    淺析使用Python操作文件

    文件操作對(duì)編程語(yǔ)言的重要性不用多說(shuō),如果數(shù)據(jù)不能持久保存,信息技術(shù)也就失去了意義。按照本人經(jīng)驗(yàn),IO也是蠻頭疼的一件事,因?yàn)椴粫?huì)用得太多,所以總是記不住API,每次都要重新google就會(huì)打斷思路,還不一定每次都快速得到正確的文章。
    2017-07-07
  • Python第三方庫(kù)Click快速使用詳解

    Python第三方庫(kù)Click快速使用詳解

    這篇文章主要介紹了Python第三方庫(kù)Click的相關(guān)資料,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-12-12
  • From CSV to SQLite3 by python 導(dǎo)入csv到sqlite實(shí)例

    From CSV to SQLite3 by python 導(dǎo)入csv到sqlite實(shí)例

    今天小編就為大家分享一篇From CSV to SQLite3 by python 導(dǎo)入csv到sqlite實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python判斷文件和文件夾是否存在的方法

    Python判斷文件和文件夾是否存在的方法

    這篇文章主要介紹了Python判斷文件和文件夾是否存在的方法,本文還講解了判斷是否為文件或者目錄的方法、os.path.lexist的作用、FTP中判斷文件或目錄是否存在等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus

    Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考下
    2024-01-01
  • Python入門(mén)之面向?qū)ο蠛皖?lèi)

    Python入門(mén)之面向?qū)ο蠛皖?lèi)

    這篇文章主要為大家介紹了Python面向?qū)ο蠛皖?lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • python中os庫(kù)的函數(shù)使用

    python中os庫(kù)的函數(shù)使用

    這篇文章主要介紹了python中os庫(kù)的使用,本篇文章記錄下python中os庫(kù)的一些函數(shù)使用,對(duì)python?os庫(kù)使用感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • 基于PyQt5制作數(shù)據(jù)處理小工具

    基于PyQt5制作數(shù)據(jù)處理小工具

    這篇文章主要和大家介紹了如何利用Python中的PyQt5模塊制作一個(gè)數(shù)據(jù)處理小工具,可以實(shí)現(xiàn)根據(jù)每個(gè)Excel數(shù)據(jù)文件里面的Sheet批量將數(shù)據(jù)文件合并成為一個(gè)匯總后的Excel數(shù)據(jù)文件,需要的可以參考一下
    2022-03-03
  • Python PyQt5實(shí)戰(zhàn)項(xiàng)目之查詢(xún)器的實(shí)現(xiàn)流程詳解

    Python PyQt5實(shí)戰(zhàn)項(xiàng)目之查詢(xún)器的實(shí)現(xiàn)流程詳解

    PyQt5以一套Python模塊的形式來(lái)實(shí)現(xiàn)功能。它包含了超過(guò)620個(gè)類(lèi),600個(gè)方法和函數(shù)。它是一個(gè)多平臺(tái)的工具套件,它可以運(yùn)行在所有的主流操作系統(tǒng)中,包含Unix,Windows和Mac OS。PyQt5采用雙重許可模式。開(kāi)發(fā)者可以在GPL和社區(qū)授權(quán)之間選擇
    2021-11-11
  • Python django中如何使用restful框架

    Python django中如何使用restful框架

    今天給大家?guī)?lái)的是關(guān)于Python框架的相關(guān)知識(shí),文章圍繞著django中restful框架的使用展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論