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...