摘要:概述在編程中,經常需要處理出現的錯誤,比如說編程中出現的異常,網絡超時等等,有的錯誤是可以估計到的,比如說肯定是錯誤的除法,一些是估計不到的。一般來說,會在程序中創建一個類,用來專門的處理。
概述
在編程中,經常需要處理出現的錯誤,比如說編程中出現的異常,網絡超時等等,有的錯誤是可以估計到的,比如說 0 / 1 肯定是錯誤的除法,一些是估計不到的。 但是不能因為有錯誤,整個程序就停止了,程序的魯棒性就體現在面對錯誤,能夠處理錯誤
錯誤處理語句try: pass except Exception as e: print(e)
上面的程序會把導致程序出錯的原因,一句話描述出來,這樣有時候不免顯得不夠清晰,我們可以使用下面的代碼,顯示出錯的堆棧
try: s = 0 / 1 except Exception as e: print(traceback.from_exec())自建異常對象
python的所有內建的異常,全部繼承于BaseException 這個類,官方文檔看到,自建異常對象推薦是創建一個Error 類, Error 類繼承 Exception 類,然后具體的異常對象在繼承這個Error 類
class Error(Exception): pass class InputError(Error): def __init__(self,message): self.message = message def __str__(self): return self.message def test_exception(): i = 1 if i == 1: raise InputError("the number can"t equal to 1") try: test_exception() except InputError as e: print(e)log
知道了異常和如何處理異常,在調試的過程中是十分方便的,但是如果程序已經上線了,那個時候出了問題,要調查就需要借助于log 這個東西了。
一般來說,會在程序中創建一個logger 類,用來專門的 log 處理。 可以定義好一個適合自己的 logger 類,需要的時候,直接拿來用即可.
# coding:utf-8 import logging,os import logging.handlers import ctypes # 渲染 FOREGROUND_WHITE = 0x0007 FOREGROUND_BLUE = 0x01 # text color contains blue. FOREGROUND_GREEN= 0x02 # text color contains green. FOREGROUND_RED = 0x04 # text color contains red. FOREGROUND_YELLOW = FOREGROUND_RED | FOREGROUND_GREEN # cmd STD_OUTPUT_HANDLE= -11 std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) def set_color(color, handle=std_out_handle): bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) return bool class Logger(object): def __init__(self,name,path,clevel=logging.DEBUG,flevel=logging.DEBUG): self.logger = logging.getLogger(name) # 這個必須設置,否則默認不顯示debug或者info的信息,也就是說這個的配置會覆蓋掉cmd和file的配置 self.logger.setLevel(logging.DEBUG) # 設置格式化 _fmt = logging.Formatter("[%(asctime)s] [%(levelname)s] %(name)s : %(message)s", "%Y-%m-%d %H:%M:%S") # 設置命令行 sh = logging.StreamHandler() sh.setFormatter(_fmt) sh.setLevel(clevel) # 設置文件log fh = logging.handlers.RotatingFileHandler( path, maxBytes=10240000, backupCount=5, encoding="utf-8" ) fh.setFormatter(_fmt) fh.setLevel(flevel) # 添加處理器 self.logger.addHandler(sh) self.logger.addHandler(fh) def debug(self,msg): self.logger.debug(msg) def info(self,msg): self.logger.info(msg) def warn(self,msg,color=FOREGROUND_YELLOW): set_color(color) self.logger.warn(msg) set_color(FOREGROUND_WHITE) def error(self,msg,color=FOREGROUND_RED): set_color(color) self.logger.error(msg) set_color(FOREGROUND_WHITE) def critlal(self,msg): self.logger.critical(msg) if __name__ =="__main__": logyyx = Logger(__name__,"logs/test2.log",) logyyx.debug("一個debug信息") logyyx.info("一個info信息") logyyx.warn("一個warning信息") logyyx.error("一個error信息") logyyx.critlal("一個致命critical信息")
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42950.html
摘要:看到一篇很好的文章,關于處理解析失敗的方法,寫的非常詳細,特此裝載過來。再說,沒有錯誤怎么會失敗呢如果是格式錯誤,再低版本的都會告訴你,所以碰上第一個可能性就往非法字符串想如何處理中的非法字符根據的編碼范圍,是可以剔除掉非法字符的。 看到一篇很好的文章,關于處理json_decode解析失敗的方法,寫的非常詳細,特此裝載過來。 一般情況下,獲取到一段json內容,直接json_deco...
摘要:概念單元測試又稱模塊測試,是針對軟件設計的最小單位程序模塊,進行正確性檢驗的測試工作。多個模塊可以平行地獨立進行單元測試。單元測試的內容在單元測試中進行的測試工作需要在以下五個方面對所測模塊進行檢查。 單元測試一直都是考試的熱點,近幾年在上午題中出現的頻率很高。在進行單元測試時,測試人員需要依據詳細設計說明書和源程序清單,...
摘要:最近突然意識到,我竟然從來沒有認真去處理異常。第三種執行一個會拋出異常的方法這個錯誤在控制臺也和常規報錯。這種是比較常見的錯誤。它是一個全局的異常處理函數,可以抓取所有的異常。 原文: Handling Errors in Vue.js 譯者: Fundebug 本文采用意譯,版權歸原作者所有 去年一整年,我都在使用最愛的—Vue.js— 來做項目。最近突然意識到,我竟然從來沒...
摘要:上手并過渡到取代的泊學原文鏈接泊學代碼秀視頻自從以來,的錯誤處理幾乎就是一成不變的。在中,這個尷尬的現狀,終于被徹底改變了。無論是還是傳統的,只要類型不匹配約束的時候,就會導致異常。 上手并過渡到PHP7 取代fatal error的engine exceptions 泊學原文鏈接泊學代碼秀視頻 自從PHP 4以來,PHP的錯誤處理幾乎就是一成不變的。只不過在PHP 5.0里添加了E_...
摘要:如果應用程序不再需要接受有關用戶的持續位置更新,則只需調用函數,如下所示表示一個唯一的監視請求以便將來取消監視。 GeolocationAPI學習,我寫的挺枯燥的,直接跳到最后看示例。 5.1 位置信息 HTML5 Geolocation API的使用方法相當簡單。請求一個位置信息,如果用戶同意,瀏覽器就會返回位置信息,該位置信息是通過支持HTML5地理定位功能的底層設備(手機、筆記本...
閱讀 2538·2021-11-24 10:20
閱讀 2385·2021-09-10 10:51
閱讀 3370·2021-09-06 15:02
閱讀 3105·2019-08-30 15:55
閱讀 2835·2019-08-29 18:34
閱讀 3071·2019-08-29 12:14
閱讀 1206·2019-08-26 13:53
閱讀 2917·2019-08-26 13:43