這裏提醒各位一句,學習語法的時候,尤其是在各種網站學習的時候一定要實踐一下,因爲有坑... ...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++最後都要轉化爲彙編,而異常處理轉化爲彙編後執行的操作要比一個入參判斷多很多。