什麼時異常?
在程式執行過程中影響程式正常執行的內容,
為什麼需要異常處理?
可以讓你的程式更加健壯, 可以清晰的快速修復異常。
普通的異常處理:
import timeexcept nameerror as e: # 對於異常進行乙個重新命名;記錄了異常的詳細資訊;try:
#如果你覺得**可能出現問題, 那麼放在try語句中, 只執行一次;
print(s)
print(「hello」)
#可能執行一次, 也可能不執行;print(「名稱錯誤」)
with open(「except.log」, 『w』) as f:
f.write(time.ctime() + 』 ')
f.write(str(e))
finally:
#無論是否出現異常, 肯定會執行一次,print(「處理結束」)
import timeprint(「檔案讀取結束」)try:
#如果你覺得**可能出現問題, 那麼放在try語句中, 只執行一次;
print(『hello』)
with open(』/etc/aa』) as f:
print(f.read()[:5])
li = [1, 2, 3, 4] # try語句中一旦出現問題, 後面的語句(try裡面的)不執行
print(li[5])
print(s)
print(「hello」)
except (nameerror, indexerror) as e: # 對於異常進行乙個重新命名;記錄了異常的詳細資訊;
#可能執行一次, 也可能不執行;#print(「名稱錯誤」)
with open(「except.log」, 『a+』) as f:
f.write(time.ctime() + 』 』 + str(e) + 『\n』)
finally:
#無論是否出現異常, 肯定會執行一次,print(「處理結束」)
baseexception
±- systemexit
±- keyboardinterrupt
±- generatorexit
±- exception
±- stopiteration
±- stopasynciteration
±- arithmeticerror
| ±- floatingpointerror
| ±- overflowerror
| ±- zerodivisionerror
±- assertionerror
±- attributeerror
±- buffererror
±- eoferror
±- importerror
| ±- modulenotfounderror
±- lookuperror
| ±- indexerror
| ±- keyerror
±- memoryerror
±- nameerror
| ±- unboundlocalerror
±- oserror
| ±- blockingioerror
| ±- childprocesserror
| ±- connectionerror
| | ±- brokenpipeerror
| | ±- connectionabortederror
| | ±- connectionrefusederror
| | ±- connectionreseterror
| ±- fileexistserror
| ±- filenotfounderror
| ±- interruptederror
| ±- isadirectoryerror
| ±- notadirectoryerror
| ±- permissionerror
| ±- processlookuperror
| ±- timeouterror
±- referenceerror
±- runtimeerror
| ±- notimplementederror
| ±- recursionerror
±- syntaxerror
| ±- indentationerror
| ±- taberror
±- systemerror
±- typeerror
±- valueerror
| ±- unicodeerror
| ±- unicodedecodeerror
| ±- unicodeencodeerror
| ±- unicodetranslateerror
±- warning
±- deprecationwarning
±- pendingdeprecationwarning
±- runtimewarning
±- syntaxwarning
±- userwarning
±- futurewarning
±- importwarning
±- unicodewarning
±- byteswarning
±- resourcewarning
如果**本身沒有異常報錯,但是我們需要使其在達到一定條件時會報錯,這時需要用raise丟擲異常
example:
age = int(input(「age:」))if age < 0 or age > 120:class ageerror(exception):
pass
raise ageerrorelse:
print(age)
import sys#print(sys.argv)
print(sys.argv[1:])
def is_prime(num): # 1 2assert num > 1
from math import sqrt
for i in range(2, int(sqrt(num)+1)):
if num % i == 0:
return false
else:
return true
while true:
try:for num in [12,20,99999,132]:for num in [3,7,11,13]:
assert is_prime(num) == true, 』 %s error』 %(num)
assert is_prime(num) == false, 』 %s error』 %(num)
except assertionerror as e:
print(e)else:
print(「測試用例全部通過…」)
日誌是用來記錄程式在執行過程中發生的狀況,在程式開發過程中新增日誌模組能夠幫助我們了解程式執行過程中發生了哪些事件,這些事件也有輕重之分。
根據事件的輕重可分為以下幾個級別:
debug: 詳細資訊,通常僅在診斷問題時才受到關注。整數level=10
info: 確認程式按預期工作。整數level=20
warning:出現了異常,但是不影響正常工作.整數level=30
error:由於某些原因,程式 不能執行某些功能。整數level=40
critical:嚴重的錯誤,導致程式不能執行。整數level=50
預設的級別是warning,也就意味著只有級別大於等於的才會被看到,跟蹤日誌的方式可以是寫入到檔案中,也可以直接輸出到控制台。
import logging
#配置日誌的資訊:
#1). 日誌級別: debug, info, warning, error, critical
#2). level: 指日誌級別為info及以上的日誌資訊會被記錄到檔案中;
#3). format: 指定日誌的格式, 可以去logging.formatter檢視參考資訊
logging.basicconfig(filename=『my.log』, level=logging.warn, format="%(asctime)s-%(filename)s-%(lineno)d- %(levelname)s: %(message)s ")
logging.debug(「這是乙個除錯資訊」)
logging.error(「資料庫更新失敗」)
logging.critical(「資料資訊刪除失敗」)
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...