異常
異常(Exception),程序在運行過程中發生由於外部問題(如硬件錯誤、輸入錯誤)等導致的程序異常事件。
在Python等面向對象的編程語言中,異常本身是一個對象,產生異常就是產生了一個異常對象。
拋異常的好處
在編程中拋出異常,可以使得程序能夠繼續執行,而不是中途停止,能夠保持程序的健壯性。二是,拋出異常可以幫助我們做好留痕工作,對有問題的數據進行收集處理。
編程中應用
Python
一般捕獲異常方式
在python中,我們一般使用以下格式來進行異常的捕獲。
try:
'代碼塊'
except [異常類型]:
'代碼塊'
將可能發生異常的代碼放在try下的代碼塊中。當try裏面的代碼發生異常時,如果符合except後的異常類型就直接轉向執行except裏的代碼塊;try裏面的代碼沒有出現問題,就不執行except裏的代碼。
except後如果不寫異常類型,則表示捕獲所有異常類型。
try:
print(1/0)
except ZeroDivisionError as e:
print(e)
except [異常類型] [as 變量名(保存異常信息)],[]括號中的可寫可不寫。
try-else
沒有發生異常時,在執行完try代碼塊後執行else的代碼。有異常則不執行else裏面的代碼塊。
try:
print('開始程序')
print(1/0)
except ZeroDivisionError as e:
print(e)
else:
print('else')
try-Finally
無論有沒有異常,最後都執行finally後的語句。寫在最後面
自定義異常raise
定義異常類:可以自定義一個錯誤類。例如
class Error(Exception):
def __init__(self, smg):
self.smg = smg
def __str__(self,):
return str(self.smg)
格式:raise+異常對象(‘異常描述’)
try:
raise Error('2333') #拋出異常
except Error as e:
print(e) #調用自定義異常類
>>>2333
異常種類:
Exception 異常的父類,可以捕獲多個子類
在requests模塊中常見的異常:
在requests.exceptions方法下查看
requests.exceptions ConnectionError #未知的服務器
requests.exceptions ConnectTimeout #連接\讀取超時
requests.exceptions ProxyError #代理連接不上