Python 異常處理

2021-01-07 藝賽旗RPA

前言

程序設計總是會報錯的,之前有談過幾次異常的處理,現在再來說一說:

什麼是異常?

當 Python 檢測到一個錯誤時,解釋器就無法繼續執行了,並且給出一個錯誤提示。比如寫入文件的時候,磁碟滿了,寫不進去了,或者從網絡抓取數據,網絡突然中斷。這時候,就需要捕獲處理它,否則程序會終止執行。

異常處理

使用 try/except/finally 語句進行捕獲操作, 並告訴 Python 發生異常時如何處理。

首先,檢測 try 語句塊中的錯誤,except 語句捕獲異常信息並處理。如果在 try 子句執行時沒有發生異常,Python 將執行 else 語句後的語句,然後控制流通過整個 try 語句。

如果在 try 後的語句裡發生了異常,卻沒有匹配的 except 子句,異常將被遞交到上層的 try,或者到程序的最上層,並列印預設的出錯信息。

語法格式

try:# 可能觸發異常的語句塊except: # 後面跟一個錯誤類型,當代碼發生錯誤且錯誤類型符合的時候,就會執行except中的代碼,不寫具體錯誤類型,表示接受任何類型的異常 # 這裡執行異常處理的相關代碼,列印輸出等else: # 如果沒有異常則執行else中的代碼finally: # 不管代碼是否異常,都會執行,一般是資源的關閉和釋放

excep 異常/錯誤 as 別名,使用別名接收異常對象的錯誤信息。

如何捕獲多個異常?

1. 寫出多行except 異常/錯誤,指定捕獲多個不同類型的異常。2. 使用 except (異常1,異常2.),使用元組,在一行中捕獲多個不同類型的異常。異常捕獲示例代碼:

try:print(10/0)except NameError: print('出現 NameError 異常')except ZeroDivisionError: print('出現 ZeroDivisionError 異常')except IndexError: print('出現 IndexError 異常')except Exception as e : print('未知異常',e,type(e))finally : print('無論是否出現異常,該字句都會執行')

拋出異常

我們使用 raise 語句觸發自定義異常。

語法格式:raise 異常類名(附加異常信息)示例代碼:

s = "asdfghjklqwe"try:if len(s) > 10: raise Exception("超過10個字符")except Exception as err: print(err)

自定義異常

系統的自帶的異常只要觸發就會自動拋出,有時候,用戶自己決定什麼時候拋出,並且給異常加上一些附加信息,這時候就可以使用自定義異常。

示例代碼:

# 自定義異常類,創建一個類繼承Exceptionclass MyError(Exception):passdef add(a, b): # a小於0,拋出異常 if a < 0: raise MyError('自定義的異常') return a + bprint(add(-1, 5))

異常定義好之後,與內置類的用法一樣,在需要的時候 raise 出來就可以了。

常見的使用異常的場景

網絡請求相關,比如網絡超時、連接異常等。資源訪問相關,比如文件的權限問題、文件的路徑、文件是否存在等。代碼邏輯相關,比如越界訪問、KeyError 等。

相關焦點

  • Python異常處理
    問題描述大家在使用python語言寫代碼的時候難免會出一些錯誤,而才入門的朋友們往往不知道是哪裡出了錯或者不知道自己錯在哪裡、什麼錯誤。所以我們要知道是哪行代碼出錯,其次室錯誤的類型是什麼,錯在那個細節,逐步分析,從而解決錯誤並改正。
  • python入門——Python中異常處理
    python大數據課堂已經開始了。想轉行大數據,數據挖掘,機器學習,人工智慧的小夥伴可以關注啦。上一篇帶大家了解了python中的I/O函數。今天我們來繼續了解python中的異常處理。調試環境以python3.6環境為例。需要代碼和demo的朋友可以搜索「欒鵬全棧」到我的CSDN博客。
  • python基礎---異常處理
    程序的異常處理今天霖小白心血來潮想來分享一下python基礎中的如何異常處理,使程序有更好的用戶體驗。前言python程序對用戶的輸入有一定的要求,所以當實際輸入不滿足程序要求時,可能在程序運行過程中會直接報錯無法進行下一步的運行。
  • python入門學習異常處理類型
    前言異常是指在程序執行過程中發生的一個事件,影響了程序的正常執行,例如:0做了分母。異常是Python對象,表示一個錯誤。當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。在Java語言中我們知道異常的常用結構為try catch組成,有時也會用到finally,那麼在python中異常是如何來處理的呢?python中的異常處理1.python異常簡單語法python異常的簡單語法為try-except-else語法,注意這裡的關鍵字是except而不是Exception,這與java是有區別的。
  • python面向對象之異常處理
    異常的概念 程序在運行時,如果 `Python 解釋器` 遇到 到一個錯誤,會停止程序的執行,並且提示一些錯誤信息,這就是 異常 程序停止執行並且提示錯誤信息 這個動作,我們通常稱之為:拋出(raise)異常> 程序開發時,很難將 所有的特殊情況 都處理的面面俱到,通過 異常捕獲 可以針對突發事件做集中的處理,從而保證程序的 穩定性和健壯性
  • [Python]文件與異常的錯誤處理
    [Python]文件與異常的錯誤處理1.文件的處理過程# 文件基本操作:打開文件,處理文件,關閉文件the_file = open("sketch.txt", 'r')line_content = the_file.readline()  # 不指定readline的參數,讀取一整行print(line_content)
  • python 異常處理
    對於python來說,就是工廠類被具體工廠繼承。這樣在簡單工廠模式裡集中在工廠方法上的壓力可以由工廠方法模式裡不同的工廠子類來分擔。抽象的工廠類提供了一個創建對象的方法,也叫作工廠方法。1) 抽象工廠角色(Factory): 這是工廠方法模式的核心,它與應用程式無關。是具體工廠角色必須實現的接口或者必須繼承的父類。
  • python異常處理與上下文管理器
    作者丨王翔丨來研丨清風Pythonpython異
  • 一篇文章幫你搞定Python異常處理
    =1+'str'什麼是異常異常就是程序運行時發生錯誤的信號,在python中,錯誤觸發的異常如下Python中異常種類在python中不同的異常可以用不同的類型(python中統一了類與類型,類型即類)去標識,不同的類對象標識不同的異常,一個異常標識一種錯# 觸發IndexErrorl=['run1','aa']
  • python教程之九錯誤和異常處理
    大多數的異常都不會被程序處理,都以錯誤信息的形式展現在這裡:>>> 10 * (1/0)Traceback (most recent call last):File "<pyshell#78>", line 1, in <module>10 * (1/0)ZeroDivisionError
  • 十、python基礎之異常處理結構與程序調試方法
    實驗目的:學習python的異常處理和程序調試實驗環境:已正確安裝python3.51、異常的基本概念異常是指程序運行時引發的錯誤,得不到正確的處理將會導致程序終止運行合理地使用異常處理結構可以使得程序更加健壯,具有更強的容錯性。例如:最常見的除數為0,python會拋出「ZeroDivisionError"異常。
  • Python學習第50課-處理錯誤和異常
    【每天幾分鐘,從零入門python編程的世界!】在工作當中會經常出現意料不到的錯誤和異常,就需要我們對可能出現的錯誤和異常進行預判,然後加上捕獲和處理錯誤異常的代碼,否則,程序在運行過程中,遇到錯誤和異常就會crash崩潰,無法繼續向下執行。●Python的錯誤種類:①語法錯誤,或稱解析錯誤。
  • 深入 Python 異常處理
    【導語】:本文結合例程總結Python異常處理的相關知識,幫你深入理解python異常處理。在Python 中的錯誤和異常是什麼?通常來說,程序中的錯誤至少包括兩種,一種是語法錯誤,另一種則是異常。keyError 字典的鍵找不到和FileNotFoundError 文件不存在try except使用Python的異常處理語句,可以非常優雅地處理發生的異常。
  • 16-python中的異常
    通過前兩天的文章14-python中的函數,15-再敘python中的函數我們對python中有關函數的知識有了系統的認識和學習,今天我們將接著來看一下python中的異常。(一)Bug的由來和分類    "Bug"一詞的原意是"昆蟲"或"蟲子";而在電腦系統或程序中隱藏著的一些未被發現的缺陷或問題,人們也叫它"bug"。
  • 【Python基礎】10 異常處理
    一 什麼是異常異常是程序發生錯誤的信號。程序一旦出現錯誤,便會產生一個異常,若程序中沒有處理它,就會拋出該異常,程序的運行也隨之終止。在Python中,錯誤觸發的異常如下插圖:異常處理二 異常處理為了保證程序的容錯性與可靠性,即在遇到錯誤時有相應的處理機制不會任由程序崩潰掉,我們需要對異常進行處理,處理的基本形式為
  • python妙招-異常處理之try-except
    Python中檢測處理異常是非常重要的,這可以增加代碼的健壯性,我們在寫python程序的時候,會可能會遇到一些不可預料的情況,一旦遇到這些情況,運行時程序便可能會崩潰。比如:讀寫文件時候文件打開錯誤或者文件寫入錯誤,寫爬蟲時網絡請求失敗,返回錯誤404.再或者函數處理一些不確定參數時候,都可以用到異常捕獲。
  • python3全棧開發-異常處理
    一、 什麼是異常異常就是程序運行時發生錯誤的信號(在程序出現錯誤時,則會產生一個異常,若程序沒有處理它,則會拋出該異常,程序的運行也隨之終止),在python中,錯誤觸發的異常如下而錯誤分成兩種二 、異常的種類在python中不同的異常可以用不同的類型
  • python中異常報錯的總結分析與處理方式
    想必到現在經過python基礎的學習之後,小夥伴們都已經開始寫很多腳本了,有大的有小的,但是有的時候並不是所寫的能夠順利跑出結果來,期間會有不但的報錯以及異常,很多我們都不理解,所以也就不會修改,這是寫腳本中常遇到的問題,雖然在當時被定型為絆腳石,但是多次遇到異常後我們會發現這是一筆不可多得的財富。對個人的成長有很大的幫助。
  • python中的異常捕獲
    ,比如除數為0的異常,可能初次測試時被除數都不為0,開發者就認為代碼是ok的,但是當處理的項目多了,某一天處理了一個除數為0的事務時,代碼報錯了,此時才意識到代碼存在bug, 這也是為什麼軟體開發不能一步到位,而是不斷迭代升級的原因,只有當代碼處理的項目足夠多的,範圍足夠廣,才能夠發現現有代碼的不足,從而做出改進。
  • 一文看懂Python異常處理(exception, try和raise語句)
    即便Python程序的語法是正確的,還是會有各種各樣意想不到的異常或錯誤。大多數的異常都不會被程序處理,而是以錯誤信息的形式展現出來,如下所示:>>> 10 * (1/0)Traceback (most recent call last): File "<stdin>", line 1, in ?