iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
自我挑戰組

Discord-bot,從0開始到做出一個機器人系列 第 11

遇到困難解決困難,沒有困難就給自己製造麻煩 -- 論try與expect

異常概述

在程式運行途中,經常會遇到各式各樣的錯誤,這些錯誤被統稱為異常。這類錯誤大部分都是SyntaxError : invaild syntax(無效的語法)

  • 舉例
NameError: name 'sss' is not defined

異常處理語句,使用try...except

try:
    block1
except [ExceptionName[as alias]]:
    block2

block1表示可能出錯的程式碼區塊
ExceptionName[as alias]: 可選參數,用於要指定捕獲的異常

  • 舉例
def divsion():
    nums = int(input())
    if nums != 0:
        print("num 不等於 0")

if __name__ == '__main__':
    try:
        divsion()
    except ZeroDivisionError:
        print("不是整數")
    except ValueError as e :
        print("輸入錯誤")
# input x
# output 輸入錯誤"
  • 如果需要同時處理多個異常......
# 複製上面的部分
if __name__ == '__main__':
    try:
        divsion()
    except (ValueError, ZeroDivisionError) as e:
        print("Error: ", e)

  • 這樣就能印出是出了甚麼問題

異常處理語句,使用try...except...else

  • 在上面的程式碼加上
else:
    print("毫無錯誤")
# number
# num不等於0
# 毫無錯誤

異常處理語句,使用try...except...finally

  • finally加上後,代表不論發生甚麼狀況,都會執行這些程式碼
finally:
    print("already")

使用raise語句拋出異常

raise [ExceptionName[(reason)]]
  • 舉例,可以修改成......
def divsion():
    nums = int(input())
    if nums >= 0:
        print("num 大於 0")
    if nums == 5:
        raise ValueError("Nope")

# 5
# num 大於 0
# 輸入錯誤 Nope

上一篇
後浪推前浪--前浪死在沙灘上,淺談class
下一篇
使用bot.py建立起你的第一個機器人
系列文
Discord-bot,從0開始到做出一個機器人30

尚未有邦友留言

立即登入留言