Educational Codeforces Round 93 (Rated for Div. 2)
阿新 • • 發佈:2020-08-15
"""
1、什麼是異常
異常是錯誤發生的訊號,一旦程式出錯就會產生一個異常
如果該異常沒有被處理,該異常就會被丟擲來,程式的執行隨即終止
如圖:
異常常用種類
AttributeError 試圖訪問一個物件沒有的樹形,比如foo.x,但是foo沒有屬性x
IOError 輸入/輸出異常;基本上是無法開啟檔案
ImportError 無法引入模組或包;基本上是路徑問題或名稱錯誤
IndentationError 語法錯誤(的子類) ;程式碼沒有正確對齊
IndexError 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]
KeyError 試圖訪問字典裡不存在的鍵
KeyboardInterrupt Ctrl+C被按下
NameError 使用一個還未被賦予物件的變數
SyntaxError Python程式碼非法,程式碼不能編譯(個人認為這是語法錯誤,寫錯了)
TypeError 傳入物件型別與要求的不符合
UnboundLocalError 試圖訪問一個還未被設定的區域性變數,基本上是由於另有一個同名的全域性變數,
導致你以為正在訪問它
ValueError 傳入一個呼叫者不期望的值,即使值的型別是正確的
異常是由三部分組成
1、具體哪一行程式碼丟擲的異常
2、異常的種類
NameError:變數名沒有定義過
IndexError:索引不存在
l=[11,22]
l[100]
KeyError
d={"k1":11}
d["k2"]
AttributeError:物件屬性不存在
物件.屬性
ValueError:
int("asdf")
TypeError:
"asdf"+1111
ZeroDivisionError
1/0
3、異常的內容資訊
2、為何要處理異常
為了增強程式的健壯性
3、如何處理異常
1、針對語法的錯誤:應該在程式執行前立即改正
2、針對邏輯錯誤:
2.1 如果邏輯錯誤發生的條件是可以預知的,應該if判斷解決,預防異常
age = input('>>: ').strip() if age.isdigit():
age=int(age)
if age > 18:
print('too big')
elif age < 18:
print('too small')
else:
print("got it")
else:
print('必須輸入數字')
2.2 如果邏輯錯誤發生的條件是不可預知的,那麼異常一個會發生,考慮到程式的健壯性
我們應該處理異常,做好補救措施
try:
程式碼塊
except 異常的型別:
發生異常後要執行的程式碼
"""
# 例1
# try:
# print("====>111")
# print("====>222")
# xxx
# print("====>333")
# except AttributeError as e:
# print(e)
#
# print('====>4')
# 例2
# try:
# print("====>111")
# print("====>222")
# xxx
# print("====>333")
# except NameError as e:
# print(e)
#
# print('====>4')
# # 例3
# try:
# print("====>111")
# print("====>222")
# # xxx
# # l=[]
# # l[0]
# dic={}
# dic["k1"]
# print("====>333")
# except (NameError,IndexError) as e:
# print("=---->",e)
# except KeyError as e:
# print(e)
#
# print('====>4')
# # 例4
# try:
# print("====>111")
# print("====>222")
# xxx=111
# # l=[]
# # l[0]
# dic={}
# # dic["k1"]
# print("====>333")
# except (NameError,IndexError) as e:
# print("=---->",e)
# except KeyError as e:
# print(e)
# finally:
# print("一定會執行")
# print('====>4')
# # print(xxx)
# # 例4
# try:
# print("====>111")
# print("====>222")
# finally:
# print("一定會執行")
# print('====>4')
# # print(xxx)
# # 例5
# try:
# print("====>111")
# print("====>222")
# # xxx
# l=[]
# # l[0]
# dic={}
# dic["k1"]
# print("====>333")
# except Exception as e:
# print("萬能異常",e)
# print('====>4')
# 例6
# print('==>11')
# raise NameError("變數名未定義")
# print('==>222')
# class Animal:
# def speak(self):