Python異常處理機制

2021-09-26 16:17:56 字數 2734 閱讀 2648

1.常見的異常型別

2.異常處理機制

3.異常處理方法

4.try………catch到底什麼時候用

(一)python中常見的異常型別

attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x

ioerror 輸入/輸出異常;基本上是無法開啟檔案

importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤

indentationerror 語法錯誤(的子類) ;**沒有正確對齊

indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]

keyerror 試圖訪問字典裡不存在的鍵

keyboardinterrupt ctrl+c被按下

nameerror 使用乙個還未被賦予物件的變數

syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)

typeerror 傳入物件型別與要求的不符合

unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,

導致你以為正在訪問它

valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的

示例程式1:

#!/usr/bin/python

# -*- coding:utf-8 -*-

try:

msg = input(">>")

int(msg)

except exception as e:

print("異常的型別是:%s"%type(e))

print("異常物件的內容是:%s"%e)

執行結果:

>>python

異常的型別是:異常物件的內容是:invalid literal for int() with base 10: 'python'

process finished with exit code 0

示例程式2:

#!/usr/bin/python

# -*- coding:utf-8 -*-

try:

1 + "python"

except exception as e:

print("異常的型別是:%s"%type(e))

print("異常物件的內容是:%s"%e)

執行結果:

異常的型別是:異常物件的內容是:unsupported operand type(s) for +: 'int' and 'str'

process finished with exit code 0

(二)python中的異常處理機制

在python當中,若乙個程式在執行的時候出錯,python直譯器會自動的在出錯的地方生成乙個異常物件,而後python直譯器會自動的在出錯地方的附近尋找有沒有對這個異常物件處理的**,所謂異常處理**就是try……except語句,如果沒有,python直譯器會自動的將這個異常物件拋給其呼叫函式,就這樣層層丟擲,如果在main當中也沒有對這個異常物件處理的**,python直譯器(實際上是作業系統)最後會做乙個簡單粗暴的處理,將整個程式給終止掉,並將錯誤的資訊在顯示屏上輸出。

(三)python中的異常處理方法

try:

可能出現異常的**塊

except exception as e:

print("異常的型別是:%s"%type(e))

print("異常的內容是:%s"%e)

else:

print('如果**塊不丟擲異常會執行此行**!')

finally:

print('不管**塊是否丟擲異常都會執行此行**!')

示例程式1:

#!/usr/bin/python

# -*- coding:utf-8 -*-

try:

msg = input(">>")

print(int(msg))

except exception as e:

print("異常的型別是:%s"%type(e))

print("異常的內容是:%s"%e)

else:

print('如果**塊不丟擲異常會執行此行**!')

finally:

print('不管**塊是否丟擲異常都會執行此行**!')

執行結果:

>>34

34如果**塊不丟擲異常會執行此行**!

不管**塊是否丟擲異常都會執行此行**!

如果**塊不丟擲異常會執行此行**!

不管**塊是否丟擲異常都會執行此行**!

(四)異常使用場景

1、異常並不一定使程式的邏輯更加清晰,有的時候會導致程式的邏輯更加混亂,常用於伺服器端無法預知客戶端的錯誤場景

2、能用if就用if吧

**示例:

#!/usr/bin/python

# -*- coding:utf-8 -*-

msg = input(">>")

if msg.isdecimal():

print(int(msg))

else:

print("您輸入的內容有誤,請輸入數字!")

Python 異常處理機制

python的異常處理能力是很強大的,可向使用者準確反饋出錯資訊。在python中,異常也是物件,可對它進行操作。所有異常都是基類exception的成員。所有異常都從基類exception繼承,而且都在exceptions模組中定義。python自動將所有異常名稱放在內建命名空間中,所以程式不必匯...

Python異常處理機制

部落格核心內容 1.常見的異常型別 2.異常處理機制 3.異常處理方法 4.try catch到底什麼時候用 一 python中常見的異常型別 attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x ioerror 輸入 輸出異常 基本上是無法開啟檔案 imp...

Python異常處理機制

在構建乙個魯棒性較強的python專案時,合適的異常處理機制,是相當重要的。本文主要介紹python異常處理機制的基本概念和常用的異常處理方法。在python中使用異常物件來表示異常狀態,並在遇到錯誤時引發異常。異常物件未被處理 或捕獲 時,程式將終止並顯示一條錯誤訊息 traceback 常見的內...