例外處理
把可能會發生的錯誤,提前在代碼里進行捕捉(監測)
try :
code
except Exception:
出錯后要執行的代碼
下面是常見的例外:
attributeError 試圖訪問一個物件沒有的屬性
Nameerror 訪問一個沒有變數
Valueerror 值型別不匹配
importError 匯入不存在的模塊
indentationError 縮進錯誤 --> 強型別錯誤,只要犯這種錯誤程式就會崩潰,這種錯誤是抓不到的
syntaxError 語法錯誤 --> 同上
indexError 下標索引超出邊界錯誤
Keyboardinterrupt ctrl+c 無法退出程式
EOFError ctrl+d 無法退出程式
Typeerror 型別不符合
Unboundlocalerror 試圖訪問一個還未被設定的區域變數,基本上是由于另有一個同名的全域變數,導致你以為正在訪問它
valueError 傳入一個呼叫者不期望的值,及時值的型別是正確的
# -*- coding:utf-8 -*-
while True:
num1 = input("num1>>").strip()
num2 = input("num2>>").strip()
try:
num1 = int(num1)
num2 = int(num2)
result = num1 + num2
print(result,name)
# except Exception as err:
# print("info is error. check")
# print(err)
except NameError as e:
print(e)
except ValueError as e:
print(e)
Try ..else..finally
Else 不觸發例外執行里邊的代碼
Finally 無論觸發例外與否都會執行里邊的代碼
自定義例外
# -*- coding:utf-8 -*-
#自定義例外
class YoutubeConnectionError(BaseException):
def __init__(self,msg):
self.msg = msg
def __str__(self):
return self.msg
name = "Alex"
d = [1,2,3]
while True:
num1 = input("num1>>").strip()
num2 = input("num2>>").strip()
try:
num1 = int(num1)
num2 = int(num2)
result = num1 + num2
print(result)
#raise ImportError('123')
raise YoutubeConnectionError('根據法律不能翻墻')#主動觸發例外
#d[3]
# except Exception as err:
# print("info is error. check")
# print(err)筆
except YoutubeConnectionError as e:
print(e)
except NameError as e:
print(e)
except ValueError as e:
print(e)
except Exception as e:
print('發生錯誤')
else:
print("Normal!!!,不發生例外走這里")
finally:
print('any無論錯誤與否,都會走這里')
Assert 斷言的用途
Assert語法用于判斷代碼是否符合執行預期
Assert 1+1=2
Assert 1+ 2 = 2
它一般用來做單元測驗,呼叫上千個借口,看是都會出現例外
def my_interface(name,age,sorce):
assert type(name) is str
assert type(age) is int
assert type(sorce) is float
my_interface("Alex",22,66.3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/98257.html
標籤:Python
上一篇:124,二叉樹中的最大路徑和
