異常處理/加密/日誌
阿新 • • 發佈:2019-01-02
try...except...else...finally...
try: """操作""" except Exception as e: """異常的父類,可以捕獲所有的異常""" else: """保護不丟擲異常的程式碼, 當try中無異常的時候執行""" finally: """最後總要執行的"""
raise 當程式執行到raise.程式會被中斷.並例項化後面的異常物件.拋給呼叫方.如果呼叫方不處理.則會把錯誤繼續向上丟擲.最終拋給使用者.如果呼叫方處理了異常,那程式可以正常的進行執行
自定義異常類 只要類繼承了Exception類.就是異常類
class GenderError(Exception): pass
val = traceback.format_exc() # 獲取到堆疊資訊
print(val) #獲取錯誤原因
MD5加密 (不可逆的加密演算法)儲存密碼
import hashlib obj = hashlib.md5(b'abc') # 加鹽 obj.update('Grace'.encode('utf-8')) #加密的必須是位元組text = obj.hexdigest() print(text) #b333de1480cafdf03da6d8ed4fd0ba6c
日誌 (出現異常的時候,向日志裡寫錯誤資訊)
import logging logging.basicConfig(filename='x1.txt', format='%(asctime)s - %(name)s - %(levelname)s -% (module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=10) # 當前配置表示 10以上的分數會被寫⼊入⽂檔案 # CRITICAL = 50 # FATAL = CRITICAL # ERROR = 40 # WARNING = 30 # WARN = WARNING # INFO = 20 # DEBUG = 10 # NOTSET = 0 logging.critical("critical") #50分 logging.error("error") # 40分 logging.warning("warning") # 30 logging.info("info") # 20 logging.debug("debug") # 10 logging.log(2, "definition") #自定義分數
有兩個子系統要分開記錄日記,要藉助檔案助手(FileHandler)
import logging # 建立⼀一個操作⽇日誌的物件logger(依賴FileHandler) file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8')
file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - % (levelname)s -%(module)s: %(message)s")) logger1 = logging.Logger('s1', level=logging.ERROR)
logger1.addHandler(file_handler) logger1.error('我是A系統') # 再建立⼀一個操作⽇日誌的物件logger(依賴FileHandler) file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8')
file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s %(levelname)s -%(module)s: %(message)s")) logger2 = logging.Logger('s2', level=logging.ERROR)
logger2.addHandler(file_handler2) logger2.error('我是B系統')