python異常處理

2021-10-21 03:03:11 字數 4461 閱讀 3023

1. 異常處理是程式語言或計算機硬體裡的一種機制,用於處理軟體或資訊系統**現的異常狀況.

2. 異常是程式執行過程中,發生了某種『錯誤』,影響程式的正常執行. python程式在執行前有可能會發生語法錯誤,也會導致程式無法正常執行。

- 執行時錯誤

- 語法錯誤

3. 異常處理的目的:通過異常處理,我們可以對程式**現的意外情況進行處理,防止程式崩潰,增加程式的健壯性

在程式語言處理異常:

1. 使用if判斷進行處理

a = 5

b = 0

if b != 0:

print(a / b)

else:

print('除數不能為0')

2. 使用try塊處理

a = 5

b = 0

try:

print(a/b)

except:

print('除數不能為0')

# if更適合用於一些可以預判的一種異常情況,但是if不可能把所有的異常情況都判斷到,有些異常是我們無法預知

異常分類:(1)語法錯誤 (2)執行時錯誤

1. nameerror: 名字異常

變數未定義,直接去使用 nameerror: name 'a' is not defined

2. indentationerror: 縮排錯誤

在同乙個**塊中,使用了不同的縮排

3. syntaxerror:語法錯誤

1a = 5 變數名不能以數字開頭

4. typeerror: 型別錯誤

print(1+'1') 字串和int型別不能直接相加

5. zerodivisionerror:除數為零錯誤

10/0 zerodivisionerror: division by zero

6. filenotfounderror: 檔案未找到錯誤

讀檔案時,檔案不存在

7. stopiteration:迭代器異常

next()呼叫次數超過了元素的個數

8. keyerror:鍵錯誤

訪問字典不存在的鍵 d[key]

9. valueerror: 值錯誤

print(int('abc')) 將字串強制轉為int

10. attributeerror:屬性錯誤

訪問物件中不存在的屬性或方法時

11. indexerror:下標(越界)異常

下標超出範圍

12. recursionerror:遞迴異常

遞迴超過最大深度

以上的異常型別都是由類定義的

13. exception: 常見的錯誤異常的基類(父類)

14. baseexception:所有異常的基類

一般情況下,python無法正確處理/執行程式時,就會發生(丟擲)乙個異常.

異常是乙個物件,表示乙個錯誤.

當python程式發生異常時,我們就需要捕獲並處理它,否則程式會終止執行(崩潰).

1. try-except

try:

可能出現異常的**

except:

所有的異常都會在這裡處理(全捕獲)

try:

可能出現異常的**

except 異常型別 as 變數名:

只有匹配異常型別時,才會執行except (精準匹配)

# 注意:如果發生了異常,異常後面的**不會被執行

try:

10/0

print('go on') # 這行**不會被執行

except:

***

示例:

# 全匹配

try:10/

0# print([1])

except

:print

('發生了錯誤'

)# 精準匹配

try:10/

0# print([1])

except indexerror as e:

print

('發生了錯誤'

)

2. try-except-except

try:

可能出現異常的**

except 異常型別1 as e:

該型別的異常處理

except 異常型別2 as e:

另一種型別的異常處理

except:

***# 注意:通用性最高的要放最後面,匹配性最高的要放最前面

try:

10/0

# print([1])

# print(int('abc'))

except exception as e: # 這裡的except往後放 通用性強

print('發生下標越界錯誤',e)

except zerodivisionerror as e:

print('發生了除數為零的錯誤',e)

except:

print('未知型別的異常')

# 多個except後面接異常型別

try:

# 10/0

print([

][1]

)except indexerror as e:

print

('發生下標越界錯誤'

,e)except zerodivisionerror as e:

print

('發生了除數為零的錯誤'

,e)# 在最後,加except不加異常型別:用於匹配其它情況(相當於if..elif..elif..else中的else)

try:

# 10/0

# print([1])

print

(int

('abc'))

except indexerror as e:

print

('發生下標越界錯誤'

,e)except zerodivisionerror as e:

print

('發生了除數為零的錯誤'

,e)except

:print

('未知型別的異常'

)

3. try-except-except-else

try:

可能出現異常的**

except exception as e:

print(e)

else:

print('如果沒有發生異常則執行else')

示例:

import traceback

try:

# 可能出現異常的**

a =int(

input

('輸入a:'))

b =int(

input

('輸入b:'))

print

(a / b)

except

:print

('出錯了'

) traceback.print_exc(

)else

:print

('這是else'

)

4. try-except-except-finally

- 不論**是否出現異常,都會執行finally

import traceback

try:

a = int(input('輸入a:'))

b = int(input('輸入b:'))

print(a / b)

except:

traceback.print_exc()

finally:

print('最終~~~~')

class

myexception

(baseexception)

:def

__init__

(self, msg)

: self.__msg = msg

def__str__

(self)

:return self.__msg

try:

a =int(

input

('輸入a:'))

b =int(

input

('輸入b:'))

if b ==1:

# 什麼時候丟擲異常,以及什麼是異常由程式設計師來決定

raise myexception(

'除數不允許為1'

)else

:print

(a / b)

except myexception as e:

print

(e)

python異常處理 Python 異常處理

使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...

python異常舉例 Python異常處理

1.1異常問題舉例 例一 i input 請輸入數字 請輸入數字 0 print i print 5 int i traceback most recent call last file line 1,in zerodivisionerror division by zero 上述 的報錯是除零的錯...

python異常處理

當你的程式中出現異常情況時就需要異常處理。比如當你開啟乙個不存在的檔案時。當你的程式中有一些無效的語句時,python會提示你有錯誤存在。下面是乙個拼寫錯誤的例子,print寫成了print。python是大小寫敏感的,因此python將引發乙個錯誤 print hello world file l...