亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

舒兰市| 精河县| 福海县| 密山市| 鹤壁市| 香河县| 江华| 剑川县| 南雄市| 红原县| 湘乡市| 慈溪市| 玉田县| 甘洛县| 兰溪市| 白水县| 樟树市| 九江市| 普兰县| 郯城县| 长寿区| 阳泉市| 武胜县| 裕民县| 化隆| 贡嘎县| 高淳县| 淮北市| 巨野县| 怀远县| 永济市| 鄂伦春自治旗| 桐庐县| 武陟县| 集安市| 鄱阳县| 福建省| 鄂托克旗| 澜沧| 罗山县| 伽师县|