Python 異常處理

這裏提醒各位一句,學習語法的時候,尤其是在各種網站學習的時候一定要實踐一下,因爲有坑... ...Python的語法與C++相似,但是一定不要以寫C++的思維去寫Python,因爲它們有本質上的區別。Python是一門腳本語言,執行的過程就像bat和sh一樣,它是一門腳本語言,而C++是一門編譯語言。

舉個例子:

def a():

     print “函數a”

     def b():

           print ”函數b”

      b()

a()

這段代碼很簡單,而且我保證沒問題,你在C++裏面能這麼寫嗎?

下面講一下Python的異常處理機制:

Python的異常處理常用的有以下四個關鍵字

try

except

raise

finally

這又很神似C++,只不過catch被except替換掉了;

Python 所有的異常類型都是繼承自一個內置類:Exception

異常有以下幾種用法:

一、

最基本的異常處理

try:

    <code>

except Exception:

    <code>

這是最簡單的,也是最保險的,只要發生異常我都抓到,但是缺點也很明顯,你不知具體類型。


二、

指定具體的錯誤類型

try:

    <code>

except  RunTimeError: #except 後面加具體的錯誤類型

    <code>

你也可以選擇同時監聽多種類型:

 except (RumTimeError, ValueError, NameError...):

     <code>

同時也可以獲取異常輸出的參數和信息:

except ValueError as e: #異常信息保存在e中,實際上e是ValueError異常類的實例對象

    <code>

except ValueError, e:

    <code>

建議使用第一種方法

三、

自己拋出異常

這裏面就要用到raise了,它相當於C++裏面的throw;

try:

    raise Exception('fuck', 'bitch', 'shit') #拋出一個異常對象,裏面輸入的是初始化參數

except Exception as e:

    print e.args

輸出結果爲:'fuck', 'bitch', 'shit


四、

自定義異常

前面說的都是普通玩家的玩法,下面是rmb玩家的玩法

首先定義一個錯誤類型NewError

class NewError(Exception): #繼承Exception類

    <code>

拋出新異常類型

try:

    raise NewError('fuck', 'bitch', 'shit')

except NewError as e: #捕捉新錯誤類型

    <code>

這是Python2.7版本的異常管理說明(https://docs.python.org/2/tutorial/errors.html);


結尾再說一點,能不用異常處理就儘量不用,異常處理機制比較耗時,平時可以自己加個入參判斷之類的去代替,爲什麼這麼說呢?

大家不信可以自己去驗證一下,無論是Python還是C++最後都要轉化爲彙編,而異常處理轉化爲彙編後執行的操作要比一個入參判斷多很多。

發佈了30 篇原創文章 · 獲贊 19 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章