Python 異常處理

在Python程序執行過程當中發生的異常能夠經過try語句來檢測,能夠把須要檢測的語句放置在try塊裏面,try塊裏面的語句發生的異常都會被try語句檢測到,並拋出異常給Python解釋器,Python解釋器會尋找能處理這一異常的代碼,並把當前異常交給其處理。這一過程稱爲捕獲異常。若是Python解釋器找不處處理該異常的代碼,Python解釋器會終止該程序的執行。python

 

一、默認異常處理器。git

若是咱們沒有對異常進行任何預防,那麼程序在執行過程當中發生異常就會中斷程序,調用python默認的異常處理器,並在終端輸出異常信息,如圖所示,第一行代碼發生異常,就不會繼續被執行編碼

d = 1/0
print(d)

#結果:
Traceback (most recent call last):
  File "C:/Users/Bai/PycharmProjects/untitled/摩羯座/day7/__init__.py", line 1, in <module>
    d = 1/0
ZeroDivisionError: division by zero

 

二、try....except....spa

程序執行到第2句時發現try語句,進入try語句塊執行,發生異常,回到try語句層,尋找後面是否有except語句,找到except語句後,會調用自定義的異常處理器,except將異常處理完畢後,程序繼續往下執行,即執行except下的語句,try語句結束後,繼續向下執行print(end...)語句操作系統

a = [1,2,3]
try:
    a[3]
except IndexError as e:
    print('下標越界',e)
else:
    print('正常運行')

#結果:
下標越界 list index out of range

 

  • except Exception——不管是什麼異常均可以捕捉到
a = [1,2,3]
try:
    a[3]
except Exception as e:
    print('出異常了',e)
else:
    print('正常運行')

#結果:
出異常了 list index out of range

 

 

  • finally——有沒出現異常都會都會走這裏
a = [1,2,3]
try:
    a[3]
except Exception as e:
    print('出異常了',e)
else:
    print('正常運行')
finally:
    print('finally')

#結果:
出異常了 list index out of range
finally

 

3.主動拋出異常code

  • raise——拋出異常後,剩下的就不會繼續往下執行(想要不想代碼在哪兒不想繼續往下執行了,須要提示下錯誤,可使用)
price = input('price')
if not price.isdigit():
    raise Exception("價格錯誤")  #錯誤能夠自主來定義

#結果:
prices
Traceback (most recent call last):
  File "C:/Users/Bai/PycharmProjects/untitled/摩羯座/day7/__init__.py", line 3, in <module>
    raise Exception("價格錯誤")
Exception: 價格錯誤

 

 

 python標準異常對象

異常名稱 描述
BaseException 全部異常的基類
SystemExit 解釋器請求退出
KeyboardInterrupt 用戶中斷執行(一般是輸入^C)
Exception 常規錯誤的基類
StopIteration 迭代器沒有更多的值
GeneratorExit 生成器(generator)發生異常來通知退出
StandardError 全部的內建標準異常的基類
ArithmeticError 全部數值計算錯誤的基類
FloatingPointError 浮點計算錯誤
OverflowError 數值運算超出最大限制
ZeroDivisionError 除(或取模)零 (全部數據類型)
AssertionError 斷言語句失敗
AttributeError 對象沒有這個屬性
EOFError 沒有內建輸入,到達EOF 標記
EnvironmentError 操做系統錯誤的基類
IOError 輸入/輸出操做失敗
OSError 操做系統錯誤
WindowsError 系統調用失敗
ImportError 導入模塊/對象失敗
LookupError 無效數據查詢的基類
IndexError 序列中沒有此索引(index)
KeyError 映射中沒有這個鍵
MemoryError 內存溢出錯誤(對於Python 解釋器不是致命的)
NameError 未聲明/初始化對象 (沒有屬性)
UnboundLocalError 訪問未初始化的本地變量
ReferenceError 弱引用(Weak reference)試圖訪問已經垃圾回收了的對象
RuntimeError 通常的運行時錯誤
NotImplementedError 還沒有實現的方法
SyntaxError Python 語法錯誤
IndentationError 縮進錯誤
TabError Tab 和空格混用
SystemError 通常的解釋器系統錯誤
TypeError 對類型無效的操做
ValueError 傳入無效的參數
UnicodeError Unicode 相關的錯誤
UnicodeDecodeError Unicode 解碼時的錯誤
UnicodeEncodeError Unicode 編碼時錯誤
UnicodeTranslateError Unicode 轉換時錯誤
Warning 警告的基類
DeprecationWarning 關於被棄用的特徵的警告
FutureWarning 關於構造未來語義會有改變的警告
OverflowWarning 舊的關於自動提高爲長整型(long)的警告
PendingDeprecationWarning 關於特性將會被廢棄的警告
RuntimeWarning 可疑的運行時行爲(runtime behavior)的警告
SyntaxWarning 可疑的語法的警告
UserWarning 用戶代碼生成的警告

 


任何付出都是值得的,會愈來愈好blog

相關文章
相關標籤/搜索