中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python 3 學習筆記:異常代碼調試

發布時間:2020-06-17 16:46:06 來源:網絡 閱讀:237 作者:wx5d52d9ece41bf 欄目:編程語言

什么是異常

程序運行過程中,產生的錯誤統稱為異常(bug)。這些異常有的可能是語法錯誤,如關鍵字輸入錯誤、調用錯誤等,這一類的異常都是顯式的,很好發現;還有一種就是隱式的錯誤,只用在使用時才會被發現,和使用者的操作有關。

下面介紹一下 Python 常見的異常提示:

異常類型.jpg

異常處理語句

try … except …
在使用時,將可能產生異常的代碼放在 try 語句中,把處理結果放在 except 語句中,這樣,當 try 后面的代碼發生錯誤時就會執行 except 中的代碼。如果 try 后的代碼沒有異常,則不會執行 except 后的代碼。

try:
do some things
except exceptionName:
do some things

exceptionName 用于指定可能出現的異常的名稱。如果不指定異常的名稱,則表示捕獲全部可能發生的異常。

示例代碼:

def division():
print("====== 開始分蘋果 ======")

apple = int(input("一共有幾個大蘋果:"))
child = int(input("一共有幾個小朋友:"))

result = apple // child
remain = apple % child

if remain > 0:
    print("一共 {:d} 個大蘋果平均分給 {:d} 個小朋友,每人 {:d} 個,剩余 {:d} 個。".format(apple, child, result, remain))
else:
    print("一共 {:d} 個大蘋果平均分給 {:d} 個小朋友,每人 {:d} 個。".format(apple, child, result))

if name == "main":
try:
division()
except ZeroDivisionError:
print("蘋果不能被 0 個小朋友平分!!!")

在捕獲異常的時候,可以同時捕獲多個異常,如:

try:
do some things
except(ValueError, ZeroDivisionError) as e:
do some things

try … except … else
該語句在 except 之后加了一個 else 語句,用于指定當 try 語句沒有發現異常時需要執行的代碼,如果 try 語句中發現了異常,則不再執行 else 之后的代碼。

try:
do some things
except exceptionName:
do some things
else:
do some things

示例代碼:

def division():
print("====== 開始分蘋果 ======")

apple = int(input("一共有幾個大蘋果:"))
child = int(input("一共有幾個小朋友:"))

result = apple // child
remain = apple % child

if remain > 0:
    print("一共 {:d} 個大蘋果平均分給 {:d} 個小朋友,每人 {:d} 個,剩余 {:d} 個。".format(apple, child, result, remain))
else:
    print("一共 {:d} 個大蘋果平均分給 {:d} 個小朋友,每人 {:d} 個。".format(apple, child, result))

if name == "main":
try:
division()
except ZeroDivisionError:
print("蘋果不能被 0 個小朋友平分!!!")
except ValueError as e:
print("輸入錯誤!!!", e)
else:
print("蘋果分配成功。。。")

try … except … finally
無論 try 語句中是否發生異常,都會執行 finally 之后的代碼。

try:
do some things
except exceptionName:
do some things
finally:
do some things

示例代碼:

def division():
print("====== 開始分蘋果 ======")

apple = int(input("一共有幾個大蘋果:"))
child = int(input("一共有幾個小朋友:"))

result = apple // child
remain = apple % child

if remain > 0:
    print("一共 {:d} 個大蘋果平均分給 {:d} 個小朋友,每人 {:d} 個,剩余 {:d} 個。".format(apple, child, result, remain))
else:
    print("一共 {:d} 個大蘋果平均分給 {:d} 個小朋友,每人 {:d} 個。".format(apple, child, result))

if name == "main":
try:
division()
except ZeroDivisionError:
print("蘋果不能被 0 個小朋友平分!!!")
except ValueError as e:
print("輸入錯誤!!!", e)
else:
print("蘋果分配成功。。。")
finally:
print("分配了一次蘋果。")

raise
如果某個函數可能會產生異常,但是不想在當前函數中處理該異常,則可以使用 raise 語句在函數中拋出異常,

raise [exceptionName[(reason)]]

其中,exceptionName[(reason)] 為可選參數,用于指定拋出的異常名稱及異常信息的描述,如果省略則把異常原樣拋出。

示例代碼:

def division():
print("====== 開始分蘋果 ======")

apple = int(input("一共有幾個大蘋果:"))
child = int(input("一共有幾個小朋友:"))

if apple < child:
    raise ValueError("蘋果太少了不夠分!")

result = apple // child
remain = apple % child

if remain > 0:
    print("一共 {:d} 個大蘋果平均分給 {:d} 個小朋友,每人 {:d} 個,剩余 {:d} 個。".format(apple, child, result, remain))
else:
    print("一共 {:d} 個大蘋果平均分給 {:d} 個小朋友,每人 {:d} 個。".format(apple, child, result))

if name == "main":
try:
division()
except ZeroDivisionError:
print("蘋果不能被 0 個小朋友平分!!!")
except ValueError as e:
print("輸入錯誤!!!", e)
else:
print("蘋果分配成功。。。")
finally:
print("分配了一次蘋果。")

程序測試

使用 IDE 調試

基本上所有的 IDE 都具有代碼調試功能,如 Python 自帶的 IDLE 和 PyCharm 等等。一般都是在出現異常的地方設置斷點,然后在此處查看數據的值是否正確。具體的內容我也在學習過程中,沒有可以調試的代碼,以后如果有資料了在進行補充。

使用 assert 語句調試

該語句一般用于對程序在某個時刻必須滿足的條件進行驗證,

1
assert expression [reason]

其中,expression 是一個條件表達式,如果為假則拋出 AssertError 異常,反之則什么都不做。reason 為可選參數,用于描述前面的 expression 為了更好的知道哪里出現了錯誤。

示例代碼:

def division():
print("====== 開始分蘋果 ======")

apple = int(input("一共有幾個大蘋果:"))
child = int(input("一共有幾個小朋友:"))

assert apple > child, "蘋果不夠分。"

result = apple // child
remain = apple % child

if remain > 0:
    print("一共 {:d} 個大蘋果平均分給 {:d} 個小朋友,每人 {:d} 個,剩余 {:d} 個。".format(apple, child, result, remain))
else:
    print("一共 {:d} 個大蘋果平均分給 {:d} 個小朋友,每人 {:d} 個。".format(apple, child, result))

if name == "main":
try:
division()
except ZeroDivisionError:
print("蘋果不能被 0 個小朋友平分!!!")
except ValueError as e:
print("輸入錯誤!!!", e)
else:
print("蘋果分配成功。。。")
finally:
print("分配了一次蘋果。")

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

噶尔县| 敖汉旗| 娱乐| 新民市| 乌兰察布市| 崇左市| 巫山县| 卢湾区| 安龙县| 鸡东县| 华阴市| 凉山| 穆棱市| 安陆市| 西昌市| 合阳县| 资讯| 滦平县| 庆安县| 巴彦淖尔市| 安溪县| 焦作市| 舒城县| 溧阳市| 友谊县| 南投县| 名山县| 洛川县| 延津县| 东平县| 玛多县| 华安县| 济南市| 无锡市| 武隆县| 宁城县| 武定县| 大冶市| 兴隆县| 忻城县| 封开县|