致一路走來的Python愛好者——Python學習之路④

磕磕絆絆,來到第四周學習: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章