異常:
try:
except異常型別,捕獲異常 處理異常 也可以巢狀 除了。。。
except exception as xx:未知錯誤。如果之前的都沒有,就抓所有
else:沒有錯誤
可以寫入多個except 捕獲異常:
except 異常型別 as xx:——具體的異常資訊物件
執行了乙個異常後不會繼續執行下面的異常
(except(可以寫多個異常型別),可以統一執行的時候用,但是不知道具體錯誤資訊)
exception:可以判斷所有錯誤,但不知道是哪乙個錯誤型別,無法定位,建議最後用,語法錯誤無法抓住,比如縮排
finally:不管有沒有異常一定會執行 異常的終結者, 一般把關閉的操作寫入這裡
遇到return 先看有沒有finally,如果有先執行finally在return
exit()退出程式對本身方法沒有影響 對下面其他異常的有影響
自定義異常:raise
raise 後面可以自定義異常 用try捕獲 輸出異常
try:
raise ***x(" ")
except ***x as x:
日誌:可以檢視日常登入、異常等日誌資訊,有日誌檔案,按照日誌級別進行列印 匯入日誌
日誌級別:
critical (危急)> error(錯誤) > warning(警告) > info (資訊)> debug(除錯),notset(沒有設定)
級別越高列印的日誌越少,反之亦然,即:
debug : 列印全部的日誌(notset等同於debug)
info : 列印info,warning,error,critical級別的日誌
warning : 列印warning,error,critical級別的日誌
error : 列印error,critical級別的日誌
建立示例:
可以建立乙個檔案(如:a)並按照設定的格式來儲存日誌資訊:
(如果沒有建立會預設在當前路徑下自動建立,檢視檔案時需要轉成 gbk)
import logging #先導入日誌
***日誌格式 = "%(asctime)s - %(levelname)s - %(message)s"
#輸出格式 #日誌日期 #日誌級別錯誤型別 #輸出日誌資訊內容
logging.basicconfig(filename='a.txt',level=logging.debug,format=***)
#呼叫固定方法 #輸出到a這個檔名裡 #level定義級別 #format按照哪個格式去輸出
可以定義乙個函式方法設定捕獲日誌:
示例:def test():
try:
a=int(input("請輸入乙個被除數:")) #設定乙個程式執行
b=int(input("請輸入乙個除數:"))
print(a/b)
return
except (valueerror): ——#設定出現那種異常 設定匯入日誌級別
logging.debug("只能輸入數字!") ——#輸入設定的資訊
except zerodivisionerror: #同上
logging.info("除數不能為0" )
else:
print("else...")
finally:
print("程式結束")
test()
日誌格式:
logging.basicconfig()函式中的具體引數:
filename: 指定的檔名建立filedhandler,這樣日誌會被儲存在指定的檔案中;
filemode: 檔案開啟方式,在指定了filename時使用這個引數,預設值為「w」還可指定為「a」;
format: 指定handler使用的日誌顯示格式;
level: 設定rootlogger的日誌級別
stream: 用指定的stream建立streamhandler。可以指定輸出到sys.stderr,sys.stdout或者檔案,預設為sys.stderr。
若同時列出了filename和stream兩個引數,則stream引數會被忽略。
format引數中可能用到的格式化資訊:
%(name)s logger的名字
%(levelno)s 數字形式的日誌級別
%(levelname)s 文字形式的日誌級別
%(pathname)s 呼叫日誌輸出函式的模組的完整路徑名,可能沒有
%(filename)s 呼叫日誌輸出函式的模組的檔名
%(module)s 呼叫日誌輸出函式的模組名
%(funcname)s 呼叫日誌輸出函式的函式名
%(lineno)d 呼叫日誌輸出函式的語句所在的**行
%(created)f 當前時間,用unix標準的表示時間的浮 點數表
%(relativecreated)d 輸出日誌資訊時的,自logger建立以 來的毫秒數
%(asctime)s 字串形式的當前時間。預設格式是 "年-月-日 時:分:秒,毫秒"
%(thread)d 執行緒id。可能沒有
%(threadname)s 執行緒名。可能沒有
%(process)d 程序id。可能沒有
%(message)s 使用者輸出的訊息
python中時間日期格式化符號:
%y 兩位數的年份表示(00-99)
%y 四位數的年份表示(000-9999)
%m 月份(01-12)
%d 月內中的一天(0-31)
%h 24小時制小時數(0-23)
%i 12小時制小時數(01-12)
%m 分鐘數(00=59)
%s 秒(00-59)
%a 本地簡化星期名稱
%a 本地完整星期名稱
%b 本地簡化的月份名稱
%b 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366)
%p 本地a.m.或p.m.的等價符
%u 一年中的星期數(00-53)星期天為星期的開始
%w 星期(0-6),星期天為星期的開始
%w 一年中的星期數(00-53)星期一為星期的開始
%x 本地相應的日期表示
%x 本地相應的時間表示
%z 當前時區的名稱
%% %號本身
Python 異常和日誌
一 異常 1 異常 異常通常可以看做是程式的錯誤,代表程式是有缺陷的。異常型別 異常 描述 baseexception 所有異常的基類 systemexit 直譯器請求退出 exception 常規錯誤的基類 stopiteration 迭代器沒有更多的值 generatorexit 生成器 gen...
python日誌和異常
日誌 異常 2.異常 try捕獲由python或程式本身引發的異常 raise 手工地引發乙個異常 為什麼要使用異常 錯誤處理,當python檢查以程式執行時的錯誤就引發異常,你可以在程式裡捕捉和處理這些錯誤,或者忽略它們。事件通知,異常也可以作為某種條件的訊號,而不需要在程式裡傳送結果標誌或顯式地...
異常和日誌
class excption exception 自定義異常類 pass try input 請輸入性別 if 男 and 女 raise exception 性別只能是男或女 except excption as ex print ex except exception as ex print e...