1. 程式人生 > >異常處理/加密/日誌

異常處理/加密/日誌

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系統')