異常處理MR5
阿新 • • 發佈:2019-01-01
異常處理. 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
(
'登入失敗'
)
|