中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python基礎學習教程系列講解——try_except異常處理機制

發布時間:2020-08-06 18:13:18 來源:ITPUB博客 閱讀:180 作者:千鋒Python唐小強 欄目:編程語言

在Python編程中不可避免的會出現錯誤,在調試階段出現語法之類的錯誤時,Pycharm會在Debug窗口提示錯誤,但是程序在運行時由于內部隱含的問題而引起錯誤,會導致程序終止執行。比如以下例程中,使用urllib庫打開URL時由于網絡問題而發生了錯誤:

import urllib.request
req = urllib.request.urlopen('http://www.baidu.com')
print(req.read())
Traceback (most recent call last):
……
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

在Python中出現解釋器無法正常處理的程序時會引發異常。如果要避免程序在異常發生時結束運行,那么通常使用異常處理語句捕捉異常,再通過其他的邏輯代碼讓程序繼續運行。異常處理語句為try/except,它的基本語法結構如下:

try:
 < 語句 > # 運行代碼
except [(Error1, Error2, ...)[as e]]:
 < 語句 > # 如果在try中引發了'Error1'異常
except [(Error3, Error4, ...)[as e]]:
 < 語句 > # 如果在try中引發了'Error3'異常
except:
 < 語句 > # 如果在try中引發了其他異常

當Python 解釋器在執行 try 中的代碼時出現異常,Python 解釋器會依次判斷該異常對象是否是 except 塊后的異常類或其子類的實例,根據該異常的類型尋找能處理該異常對象的 except 塊,如果找到合適的 except 塊,則把該異常對象交給該 except 塊處理。如果 Python 解釋器找不到捕獲異常的 except 塊,則程序運行終止,Python 解釋器也將退出。

從 try except 的基本語法格式可以看出,try 塊僅有一個,但 except 代碼塊可以有多個,這是為了針對不同的異常類型提供不同的異常處理方式,比如以下例程中,分別定義了浮點計算錯誤FloatingPointError異常和輸入/輸出操作失敗IOError異常:

try:
 import urllib.request
 req = urllib.request.urlopen('http://www.baidu.com')
 print(req.read())
except FloatingPointError:
 print("Capture FloatingPointError")
except IOError:
 print("Capture IOError")
except Exception:
 print("Capture Error")
except:
 print("Capture Error")

以上程序針對 FloatingPointError、IOError類型的異常,提供了專門的異常處理邏輯。該程序運行時的異常處理邏輯可能有如下幾種情形:

  • 如果在運行該程序時出現浮點計算錯誤,Python 將調用 FloatingPointError 對應的 except 塊處理該異常。
  • 如果在運行該程序時出現輸入/輸出操作失敗,Python 將調用IOError對應的 except 塊處理該異常。此處解釋器會執行IOError的異常處理。
  • 如果在程序運行時出現其他異常,Python 可以調用 Exception 對應的 except 塊處理該異常。當然except后面也可以不指定任何異常類。

在語法中的[]內為可選內容,于是可以有以下幾種形式:

1 . except 后不指定具體的異常名稱,表示要捕獲所有類型的異常。

try:
 < 語句 > # 運行代碼
except:
 < 語句 > # 如果在try中引發了其他異常

2 . except 后指定具體的異常名稱,表示捕獲指定類型的異常。比如 Error1、Error2、Error3、Error4分別表示各自的 except 塊可以處理異常的具體類型。

try:
 <語句> # 運行代碼
except Error1:
 <語句> # 如果在try中引發了'Error1'異常

3 . [as e] 表示將異常類型賦值給變量 e,以方于在 except 塊中調用異常類型。所有的異常對象都包含了如下幾個常用屬性和方法:

args:該屬性返回異常的錯誤編號和描述字符串。

errno:該屬性返回異常的錯誤編號。

strerror:該屬性返回異常的描述字符串。

with_traceback():通過該方法可處理異常的傳播軌跡信息。

try:
 import urllib.request
 req = urllib.request.urlopen('http://www.baidu.com')
 print(req.read())
except FloatingPointError:
 print("Capture FloatingPointError")
except IOError as e:
 print("Capture IOError")
 print(e.args) # 訪問異常的錯誤編號和詳細信息
 print(e.errno) # 訪問異常的錯誤編號
 print(e.strerror) # 訪問異常的詳細信息
except:
 print("Capture Error")
(TimeoutError(10060, 'A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond', None, 10060, None),)
None
None

如果要查看更詳細的異常信息,可以導入traceback模塊,使用print_exc()打印異常信息。print_exc()還可以接受file參數直接寫入到一個文件。比如:

traceback.print_exc(file=open('except.txt', 'w+')) # 寫入到except.txt文件去

以下為Python部分標準異常類:

Python基礎學習教程系列講解——try_except異常處理機制
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

都昌县| 柳林县| 宁晋县| 凌云县| 汉寿县| 惠安县| 化德县| 梓潼县| 扬中市| 阳西县| 乌鲁木齐市| 滕州市| 奇台县| 旅游| 交口县| 广德县| 什邡市| 苗栗市| 吴江市| 锡林郭勒盟| 固原市| 盈江县| 云南省| 淅川县| 巩义市| 房产| 称多县| 绥阳县| 德清县| 承德县| 子长县| 郑州市| 中宁县| 确山县| 于田县| 微山县| 建水县| 文化| 文成县| 永兴县| 南涧|