1 class Base: 2 def login(self): 3 raise Exception("你沒有實現login方法()") Exception是全部異常的根.(很差,沒法判斷出的什麼錯),專業的NotImplementError(沒有實現的錯誤) 4 class Normal(Base): 5 def login(self): 6 pass 7 class Member(Base): 8 def denglu(self): 9 pass 10 class Admin(Base): 11 def login(self): 12 pass 13 14 # 項目經理理寫的總入口 15 def login(obj): 16 print("準備驗證碼.......") 17 obj.login() 18 print("進入主頁.......") 19 n = Normal() 20 m = Member() 21 a = Admin() 22 login(n) 23 login(m) # 報錯. 24 login(a)
1 from abc import ABCMeta, abstractmethod 2 #注意,Python中抽象類中能夠含有普通方法 3 4 class IGame(metaclass = ABCMeta): 5 @abstractmethod 6 def play(self): 7 pass 8 9 def turn_off(self): 10 print("ko") 11 12 class DNFGame(IGame): # 子類必須實現父類中的抽象方法,不然子類也是抽象類 13 def play(self): 14 print("dnf的玩法") 15 16 dg = DNFGame() 17 dg,play()
1 def chu(a, b): 2 return a/b 3 try: ret = chu(10, 0) 4 print(ret) 5 except Exception as e: 6 print("除數不不能是0") 7 8 結果: 除數不不能是0
1 try: print("各類操做....") 2 except ZeroDivisionError as e: 3 print("除數不不能是0") 4 except FileNotFoundError as e: 5 print("文件不不存在") 6 except Exception as e: 7 print("其餘錯誤")
完整的java
1 try: 2 '''操做''' 3 except Exception as e: 4 '''異常的父類,能夠捕獲全部的異常''' 5 else: 6 '''保護不不拋出異常的代碼, 當try中無異常的時候執行行''' 7 finally: # finally通常用來做爲收尾工做 8 '''最後老是要執行行我'''
二、拋出異常 -- raise關鍵字python
1 def add(a, b): 2 ''' 3 給我傳遞兩個整數. 我幫你計算兩個數的和 4 :param :param a: 5 :param :param b: 6 :return :return: 7 ''' 8 if not type(a) == int and not type(b) == int: # 當程序運到這句話的時候. 整個函數的調會被中斷. 並向外拋出個異常. 9 raise Exception("不是整數, 朕不能幫你搞定這麼複雜的運算.") 10 return a + b # 若是調不處理異常. 那產的錯誤將會繼續向外拋. 最後就拋給了戶 11 12 # add("你好", "我叫賽利亞") 13 # 若是調處理了異常. 那麼錯誤就不會丟給戶. 程序也能正常進 14 try: 15 add("胡辣湯", "滋滋冒油的腰") 16 except Exception as e: 17 print("報錯了. 處理去吧")
1 import traceback 2 class GenderError(Exception): 3 pass 4 5 class Person: 6 def __init__(self, name, gender): 7 self.name = name 8 self.gender = gender 9 10 def nan_gu_ke_xi_zao(per): 11 if per.gender != "男": 12 raise GenderError("這裏是XX的男澡堂子. ") 13 else: 14 pass 15 p1 = Person("alex", "不詳") 16 # nan_gu_ke_xi_zao(p1) 17 p2 = Person("wusir", "不詳") 18 try: 19 nan_gu_ke_xi_zao(p2) 20 except GenderError as g: 21 print(g) 22 val = traceback.format_exc() # 獲取錯誤堆棧 23 print(val)
MD5是一種不可逆的加密算法程序員
1 1、普通 2 import hashlib 3 obj = hashlib.md5() 4 obj.update("alex".encode("utf-8")) # 加密的必須是字節 5 miwen = obj.hexdigest() 6 print(miwen) # 534b44a19bf18d20b71ecc4eb77c572f 7 8 2、高級 9 import hashlib 10 obj = hashlib.md5(b"fjlksajflkjasfsalwer123dfskjf") # 加鹽 11 obj.update("alex".encode("utf-8")) # 加密的必須是字節 12 miwen = obj.hexdigest() 13 print(miwen) # 99fca4b872fa901aac30c3e952ca786d 14 15 3、MD5應用 16 import hashlib 17 def my_md5(s): 18 obj = hashlib.md5(b"fjlksajflkjasfsalwer123dfskjf") 19 obj.update(s.encode("utf-8")) # 加密的必須是字節 20 miwen = obj.hexdigest() 21 return miwen 22 # alex: 99fca4b872fa901aac30c3e952ca786d 23 username = input("請輸⼊⽤戶名:") 24 password = input("請輸⼊密碼:") 25 # 數據存儲的時候. 26 # username: my_md5(password) 27 # 假設如今的⽤戶名和密碼分別是 28 # wusir: 99fca4b872fa901aac30c3e952ca786d ==> wusir: alex 29 # ⽤戶登陸 30 if username == "wusir" and my_md5(password) == "99fca4b872fa901aac30c3e952ca786d": 31 print("成功") 32 else: 33 print("失敗")
日誌處理算法
1 # filename: ⽂件名 2 # format: 數據的格式化輸出. 最終在⽇志⽂件中的樣⼦ 3 # 時間-名稱-級別-模塊: 錯誤信息 4 # datefmt: 時間的格式 5 # level: 錯誤的級別權重, 當錯誤的級別權重⼤於等於leval的時候纔會寫⼊⽂件 6 logging.basicConfig(filename='x1.txt', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=0) # 當前配置表示 10以上的分數會被寫⼊⽂件 7 # CRITICAL = 50 8 # FATAL = CRITICAL 9 # ERROR = 40 10 # WARNING = 30 11 # WARN = WARNING 12 # INFO = 20 13 # DEBUG = 10 14 # NOTSET = 0 15 logging.critical("我是critical") # 50分. 最貴的 16 logging.error("我是error") # 40分 17 logging.warning("我是警告") # 警告 30 18 logging.info("我是基本信息") # 20 19 logging.debug("我是調試") # 10 20 logging.log(2, "我是⾃定義") # ⾃定義. 看着給分