磕磕絆絆,來到第四周學習:Python中多變的異常
感覺自己又行了
老闆來碗毒雞湯,助我們沖沖衝
上代碼(異常處理三大塊)
001
# -*- coding: utf-8 -*-
# @Time : 2020/2/14 21:55
# @Author : 浩軒
# @File : 01_異常處理一.py
'''
演示異常處理方案一
'''
#對立思維:if else (有我沒你,有你沒我)
print("程序開始")
try: # 把有可能引發異常的代碼,放入到try的控制範圍中
a = 1
print(a) # 只要出錯,直接跳入except管轄範圍內; 如若try內代碼成功執行,則直接跳過except
except: # 異常出現之後的處理方案,放入到except進行控制
print("拋出異常")
print("程序結束")
002
# -*- coding: utf-8 -*-
# @Time : 2020/2/14 22:05
# @Author : 浩軒
# @File : 02_異常處理二.py
'''
演示異常處理二
'''
try:
print("讀文件")
f = open('text', 'r')
# f.read() #閱讀
f.write('我有遇見你運氣,卻沒有留住你的本事') # 書寫 出現問題
# f.close() #關閉文件,釋放內存 文件如果未關閉,嚴重泄漏內存
print("讀取完畢")
except: # 可以沒有
print("讀取文件失敗")
finally: # 作用:一定會強制執行裏面的代碼
print("我一定要執行!!!")
f.close()
003
# -*- coding: utf-8 -*-
# @Time : 2020/2/14 22:20
# @Author : 浩軒
# @File : 03_異常處理三.py
print("程序開始")
try: # 可能引發異常現象的代碼 必選
i = "我可能會出問題"
print(i)
print(a)
print("程序沒問題一")
except: # 出現異常現象的代碼處理 二選一 #對try裏面的代碼運行失敗的反饋
print("浩軒幫你修復") # except 與 else 是對立面
else: # 可選 未出現異常現象的代碼處理 #當作對try裏面的代碼運行成功的反饋
print("程序沒問題二")
finally: # try代碼塊結束後運行的代碼 二選一
print("我一定會執行")
print('程序結束')
1.異常的精細化處理
# -*- coding: utf-8 -*-
# @Time : 2020/2/17 20:44
# @Author : 浩軒
# @File : 04_異常精細化處理.py
'''
演示捕獲具體異常
'''
try:
# i = "haoxuan" #如果將i註釋 則會報NameError錯誤
print(i) # 一但碰到錯誤break continue
print(i.index('k'))
except NameError:
print("變量i沒有被定義,因此出現了錯誤")
except ValueError:
print("該字符的索引查詢失敗")
except NameError:
print("邏輯錯誤")
2.獲取異常具體信息
# -*- coding: utf-8 -*-
# @Time : 2020/2/17 20:57
# @Author : 浩軒
# @File : 05_獲取異常具體信息.py
try:
print(1 / 0)
except NameError: # 異常類名,類
print('錯誤發生')
except Exception: # 父類異常 一般將其放在最後
print('出現了未知錯誤')
try:
print(b) #不定義b的值,只爲報錯
except NameError as error: #對象
print("具體的異常信息是:",error)
3.構造異常現象
'''
構造異常現象
raise 異常類對象
'''
a = 1
b = 0
i = a / b # 不能作爲被除數出現
# /因此程序會去檢查吧 是否==0
if b == 0: # bug 主動製造
# 拋出(主動出現)具體的異常,報錯 製造異常
raise ZeroDivisionError('division by zero')
4.異常處理機制
# -*- coding: utf-8 -*-
# @Time : 2020/2/17 21:38
# @Author : 浩軒
# @File : 07_異常處理機制.py
#001 2調用1 1調用0
def demo():
print(i)
def demo1():
demo()
def demo2():
demo1()
try:
demo2()
except:
print("出現問題")
#002 半路攔截處理
def demo():
print(i)
def demo1():
try:
demo()
except:
print("已在此處處理")
def demo2():
demo1()
demo2()
#003. 用Debug去慢慢理解
try:
def demo():
print(i)
def demo1():
demo()
def demo2():
demo1()
try:
demo2()
except NameError:
print("因爲變量名沒有被定義")
except ZeroDivisionError:
print("不能做除法")
本週的內容先到這裏吧,救我個人而言,異常這一塊後期爬蟲會應用較多,希望觀衆姥爺們引起重視
下週會給大家推實列,帶大家做一個基礎的用戶登錄校驗,希望通過這四篇文章的學習,能在下週派上用場,我們一起加油,如有疑問評論區見,古德拜!
@Author:HaoXuan