1. 程式人生 > >異常處理MR5

異常處理MR5

 異常處理. try except raise
try:
程式碼
except 異常類:
除了錯, 如何處理異常
except 異常類:
除了錯, 如何處理異常
except 異常類:
除了錯, 如何處理異常

else:
當程式不出錯
finally:
不管出不出錯, 都要執行


raise 異常類("資訊")

如何自己定義異常
class 類(Exception):
pass

堆疊
import traceback
traceback.format_exc()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 # print(1/0) # 報錯. 程式會結束執行 # print("哈哈哈哈哈哈哈") # 0不能作為除數 ,  在程式執行的時候產生了一個錯誤物件. # 系統會丟擲這個錯誤. 如果沒有人處理錯誤. 錯誤就會被噴出給使用者     # 處理異常: 在python中可以通過try....except...來處理錯誤
# try: #     print(1/0) # except Exception: #     print('出錯了') # print('哈哈')   # 可以正常執行下去 # 所有的異常的根是Exception, 所有的異常類都會預設繼承Exception # 錯誤 # 打架錯誤  鬥毆錯誤  賭博錯誤   # try: #     # print(1/0) #     f = open('哈哈哈哈', mode='r') #     # d = {[]: 123} # except ZeroDivisionError: #     print('除以0出錯了') # except FileNotFoundError: #     print('檔案不存在的錯誤') # except Exception:   # 兜底的 #     print('其他錯誤') # else:   # 當try中的程式碼不產生任何錯誤的時候,會自動的執行else裡的程式碼 #     pass # finally:    # 最終,不管出錯還是不出錯,都要執行最後的finally 一般用來收尾 #     print('哈哈哈哈哈哈哈哈哈')     # 如何自己定義異常 # 隨便寫一個類. 這個類只要繼承了Exception 這個類就是一個異常類就可以作為raise物件 # class CulException(Exception): #     pass # # # 如何手動丟擲異常 # def cul(a, b): #     # 只能是數字相加 #     if (type(a) == int or type(a) == float ) and (type(b) == int or type(b) == float): #         return a + b #     else: #         # 丟擲異常 #         # raise 異常類(錯誤資訊) #         raise CulException("我沒辦法給你處理這樣的運算") # # # print(cul("就不放, 氣死你",2)) # # # class JackException(Exception): #     pass   # 寫一個男澡堂子 import  traceback  # 用來檢視堆疊資訊   class  GenderException(Exception):      pass   class  Person:      def  __init__( self , name, gender):          self .name  =  name          self .gender  =  gender        def  xizao( self ):          print (f "{self.name}在洗澡" )   def  nan_zao_tang_zi(ren):      if  ren.gender  = =  "男" :          ren.xizao()      else :          raise  GenderException( "性別不對. 去對門看看" )   # 拋異常是很重要的   try :      p1  =  Person( "趙亞磊" "不知道" )      p2  =  Person( "婁鯤鵬" "男" )        nan_zao_tang_zi(p1)      nan_zao_tang_zi(p2) except  GenderException:      # ret = traceback.format_exc() # 檢視堆疊資訊, 看錯誤的      # print(ret)      print ( "出錯了. 很可惜" )     # 錯誤資訊叫堆疊資訊

  

MD5加密
import hashlib

obj = hashlib.md5(b'鹽')
obj.update(b"要加密的內容")
print(obj.hexdigest())
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # 加密,不可逆 相對安全 import  hashlib   # md5物件 # obj = hashlib.md5(b'dsadasdasdas')  # 加鹽 # obj.update('123456'.encode("utf-8"))    # 把要加密的內容給md5 # print(obj.hexdigest())  # 拿到密文  82f69062874319af1af5024f39f62f41   def  my_md5(s):      obj  =  hashlib.md5(b 'dsadasdasdas' )   # 加鹽      obj.update(s.encode( "utf-8" ))     # 把要加密的內容給md5      return  obj.hexdigest()   # print(my_md5('123456'))     #   82f69062874319af1af5024f39f62f41 # 應用 # 庫裡 username  =  'wusir' password  =  '82f69062874319af1af5024f39f62f41'   uname  =  input ( '請輸入你的使用者名稱:' ) upwd  =  input ( '請輸入你的密碼:' )     # 123456 if  uname  = =  username  and  my_md5(upwd)  = =  password:      print ( '登入成功' ) else :      print ( '登入失敗' )