Python編程思想(32):異常處理中的try…except

2021-03-02 極客起源

----支持作者請轉發本文-

李寧老師已經在「極客起源」 微信公眾號推出《Python編程思想》電子書,囊括了Python的核心技術,以及Python的主要函數庫的使用方法。讀者可以在「極客起源」 公眾號中輸入 160442 開始學習。

-正文-

現在絕大多數程式語言都支持異常處理,異常處理的通行做法是將正常執行的代碼放在特定代碼塊中,然後再將處理異常的代碼放在另一個代碼塊中,如果正常執行的代碼塊的某條語句拋出了異常,那麼就會直接跳到處理異常的代碼塊中繼續執行。而在正常的代碼塊中拋出異常語句後面的所有代碼都不會被執行。
其實最初的錯誤處理並不是這樣的,而是根據具體的錯誤類型由條件進行判斷,下面是處理錯誤的偽代碼:
if 錯誤1:    print('這是錯誤1')e1if 錯誤2:    print('這是錯誤2')elif 錯誤3:    print('這是錯誤3')e1if 錯誤4:    print('這是錯誤4')else:    print('正常執行的代碼')

儘管通過條件判斷錯誤從技術上可行,但對於一個程序所拋出的錯誤數量是未知的,所以通過條件很可能無法處理所有的錯誤,為了儘可能處理所有的錯誤,可以使用Python語言的try...except語句,該語句可以捕獲各種異常。Python的異常處理機制可以讓程序具有極好的容錯性,讓程序更加健壯。當程序運行出現意外情況時,系統會自動生成一個Error對象來通知程序,從而實現將「業務實現代碼」和「錯誤處理代碼」分離,提供更好的可讀性。
try:        ... ...  except (Errorl, Error2,,.)as e:        ... ...

如果在執行try塊裡的業務邏輯代碼時出現異常,系統自動生成一個異常對象,該異常對象被提交給 Python解釋器,這個過程被稱為引發異常。當 Python解釋器收到異常對象時,會尋找能處理該異常對象的 except塊,如果找到合適的except塊,則把該異常對象交給該except塊處理,這個過程被稱為捕獲異常。如果 Python解釋器找不到捕獲異常的 except塊,則運行時環境終止, Python解釋器也將退出。
x = None
while True: try: if x == None: x = int(input("請輸入分子:")) y = int(input("請輸入分母:")) print("x / y = {}".format(x / y)) break; except : print("分母不能為0,請重新輸入分母!")

在這段代碼的try.except語句中,包含了用於輸入分子和分母的代碼。當輸入的分母為0時,會拋出異常,也就是執行except塊中的代碼,過程如下:
請輸入分子:20請輸入分母:0分母不能為0,請重新輸入分母!請輸入分母:12x / y = 1.6666666666666667

對本文感興趣,可以加李寧老師微信公眾號(unitymarvel):

關注  極客起源  公眾號,獲得更多免費技術視頻和文章。

相關焦點

  • python妙招-異常處理之try-except
    Python中檢測處理異常是非常重要的,這可以增加代碼的健壯性,我們在寫python程序的時候,會可能會遇到一些不可預料的情況,一旦遇到這些情況,運行時程序便可能會崩潰。比如:讀寫文件時候文件打開錯誤或者文件寫入錯誤,寫爬蟲時網絡請求失敗,返回錯誤404.再或者函數處理一些不確定參數時候,都可以用到異常捕獲。
  • Python異常處理
    解決方案首先我們要了解異常才能處理異常那我們來就說一說異常的定義:程序運行過程中出現的錯誤或遇到的意外情況其次是錯誤的類型分別有:語法錯誤、運行錯誤、邏輯錯誤而我們通常出錯的理由無非是這些:輸入錯誤、下標越界、類型錯誤、操作不當等等接著我們來看一看報錯的構成吧接下來我們的重點來了,在python異常處理會用到
  • 一文看懂Python異常處理(exception, try和raise語句)
    Try again")print("end")try語句按照如下方式工作;首先,執行try子句(在關鍵字try和關鍵字except之間的語句)如果沒有異常發生,忽略except子句,try子句執行後結束。如果在執行try子句的過程中發生了異常,那麼try子句餘下的部分將被忽略。
  • 如何學python 第九課-try&except-錯誤與異常
    一旦你學會了定位問題,你的編程功力便上升了一個等級。現在,我們知道了定位問題的方法。下面,我們來看看具體要怎麼寫處理問題的代碼。 處理錯誤好了,道理講得差不多了,現在開始寫代碼。為了處理錯誤,我們使用try關鍵字和except關鍵字。
  • python入門——Python中異常處理
    python大數據課堂已經開始了。想轉行大數據,數據挖掘,機器學習,人工智慧的小夥伴可以關注啦。上一篇帶大家了解了python中的I/O函數。今天我們來繼續了解python中的異常處理。調試環境以python3.6環境為例。需要代碼和demo的朋友可以搜索「欒鵬全棧」到我的CSDN博客。
  • [Python]文件與異常的錯誤處理
    [Python]文件與異常的錯誤處理1.調用split方法時,由於存在在文本行中沒有特定的字符用於識別進行前後分割,如果調用split就會出錯基於上述問題,使用find方法先查找是否存在特定的分割字符,再調用split4. 異常處理:try/except機制1.
  • python中的異常捕獲
    對於代碼中可能的異常進行處理,可以增加程序的健壯性。在python中,通過try..except語句進行異常捕獲,基本用法如下>>> def calc(a, b):... try:... num = a / b...
  • 16-python中的異常
    通過前兩天的文章14-python中的函數,15-再敘python中的函數我們對python中有關函數的知識有了系統的認識和學習,今天我們將接著來看一下python中的異常。(一)Bug的由來和分類    "Bug"一詞的原意是"昆蟲"或"蟲子";而在電腦系統或程序中隱藏著的一些未被發現的缺陷或問題,人們也叫它"bug"。
  • Python學習第50課-處理錯誤和異常
    【每天幾分鐘,從零入門python編程的世界!】說明:●首先執行try語句(在關鍵字try和關鍵字except之間的語句)。●如果try語句沒有發生異常,則整個while循環結束。●如果在執行try子句的過程中發生了異常,則執行except語句。
  • 總結Python編程中遇到的無數個「坑」(正確處理編程中的異常...
    作為對現實世界抽象的程序來說,意外和異常也是不可避免的,如果不能正確對待並加以處理,這些異常會轉變成錯誤……如此周而復始,錯誤就會像雪球一樣越滾越大了……試想,程序使用過程中,出現一大堆Trackback,會是一種什麼樣的體驗?肯定非常糟糕……今天,我們對Python異常處理的使用做一個總結,避免我們在使用過程中不小心踩到「坑」。
  • python異常處理與上下文管理器
    異常處理異常與錯誤錯誤可以通過IDE或者解釋器給出提示的錯誤opentxt('a.jpg','r')語法層面沒有問題,但是自己代碼的邏輯有問題if age>18: print('未成年')異常多指在程序執行過程中,出現的未知錯誤,語法和邏輯本身是正確的。
  • python入門學習異常處理類型
    前言異常是指在程序執行過程中發生的一個事件,影響了程序的正常執行,例如:0做了分母。異常是Python對象,表示一個錯誤。當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。在Java語言中我們知道異常的常用結構為try catch組成,有時也會用到finally,那麼在python中異常是如何來處理的呢?python中的異常處理1.python異常簡單語法python異常的簡單語法為try-except-else語法,注意這裡的關鍵字是except而不是Exception,這與java是有區別的。
  • python面向對象之異常處理
    捕獲異常 2.1 簡單的捕獲異常語法 在程序開發中,如果 對某些代碼的執行不能確定是否正確,可以增加 `try(嘗試)` 來 捕獲異常 捕獲異常最簡單的語法格式:```pythontry: 嘗試執行的代碼except: 出現錯誤的處理``` `try
  • python基礎---異常處理
    程序的異常處理今天霖小白心血來潮想來分享一下python基礎中的如何異常處理,使程序有更好的用戶體驗。前言python程序對用戶的輸入有一定的要求,所以當實際輸入不滿足程序要求時,可能在程序運行過程中會直接報錯無法進行下一步的運行。
  • while、for、try except語句中的else
    下面要看的是for,while循環和try異常處理語句中的else的用法。一、for,while循環中的elsefor,while循環中,else用於循環正常結束,且循環體中沒有break、return和異常拋出,則執行else語句塊中的內容。例如,我們判斷列表ls中是否全是奇數。普通情況下,需要引入一個標誌變量allOdd,指示所有變量都是奇數,有偶數出現則將此變量設為False。
  • python 異常處理
    在python中抽象產品一般為父類。4) 具體產品角色(Stone_Axe,Steel_Axe):具體工廠角色所創建的對象就是此角色的實例。由一個具體類實現。當Python檢測到一個錯誤時,解釋器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所謂的"異常"捕獲異常<1>捕獲異常 try...except...
  • 別再亂用 try except 了...
    有不少人在寫 Python 代碼時,喜歡用 try...except Exception,更有甚者一層套一層,不管有沒有用,先套了再說:def func():    try:        "函數內部代碼"    except Exception
  • 說說在Python中如何處理異常!
    異常處理在任何一門程式語言裡都是值得關注的一個話題,良好的異常處理可以讓你的程序更加健壯,清晰的錯誤信息更能幫助你快速修復問題。在Python中,和不部分高級語言一樣,使用了try/except/finally語句塊來處理異常,如果你有其他程式語言的經驗,實踐起來並不難。
  • 一篇文章幫你搞定Python異常處理
    =1+'str'什麼是異常異常就是程序運行時發生錯誤的信號,在python中,錯誤觸發的異常如下Python中異常種類在python中不同的異常可以用不同的類型(python中統一了類與類型,類型即類)去標識,不同的類對象標識不同的異常,一個異常標識一種錯# 觸發IndexErrorl=['run1','aa']
  • 深入 Python 異常處理
    【導語】:本文結合例程總結Python異常處理的相關知識,幫你深入理解python異常處理。在Python 中的錯誤和異常是什麼?通常來說,程序中的錯誤至少包括兩種,一種是語法錯誤,另一種則是異常。keyError 字典的鍵找不到和FileNotFoundError 文件不存在try except使用Python的異常處理語句,可以非常優雅地處理發生的異常。