iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
Software Development

Python 微進階系列 第 15

Python 微進階 Day15 - try except(例外處理) - 1 - raise

  • 分享至 

  • xImage
  •  

try except(例外處理)

  • 執行程式時出現異常狀況時通常會造成錯誤而使程式停止,except(例外) 主要是在發生預期的錯誤時可以進行對應的動作,維持程式運作,避免程式停止
  • 基礎語法為 try: except:
    • except 可以為多組
    • 可再依需要加入 elsefinally
  • except 依照對應的錯誤類型進行對應的處理
  • 例外錯誤類型有時會使用 as 省略成 e,將全部的錯誤包含,再進行後續動作
  • 注意! 若多個例外錯誤類型使用 () 變成 tuple 來包覆,否則會有錯誤
  • 使用 class 可自訂例外,class MyError(Exception):

語法

try:
    # 一般的執行內容
except TypeError:
    # 例外錯誤時執行
    # 有對應的例外錯誤類型
except ValueError as err:
    # 例外錯誤時執行
    # 有對應的例外錯誤類型,並指定成 err
except Exception:
    # 例外錯誤時執行
    # 未指定例外錯誤類型
except:
    # 例外錯誤時執行
    # 預設(未指定例外錯誤類型)的處理,若是最後 Exception 可省略
else:
    # 沒有例外錯誤時執行的內容
    # try -> else
finally:
    # 不管有無異常都會執行
    # try or except -> finally

使用 as

try:
   ...
except Exception as e:
   ...
   log("Reason:", e)
# 省略成 e

多個例外錯誤

try:
    l = ["a", "b"]
    int(l[2])
except ValueError, IndexError:
    pass

# 語法錯誤

try:
    l = ["a", "b"]
    int(l[2])
except (ValueError, IndexError) as e:
    pass

# 需改成 tuple

自訂錯誤

class MyError(Exception):
    pass

   
try:
    raise MyError("自定義錯誤")
except MyError as e:
    print("錯誤為", e)

# 錯誤為 自定義錯誤

raise

  • 使用 raise 引發一個指定的錯誤
  • 語法:raise 例外類型(參數)
raise IndexError("出現錯誤")

# IndexError: 出現錯誤
# 指定 IndexError 跟指定的錯誤訊息
try:
    a = 50
    if a >= 10:
        raise Exception(f"數字 {a} 超過 10")
except Exception as err:
    print("錯誤為:", err)

錯誤為: 數字 50 超過 10

參考資料

次回

完成一半的挑戰了,再補充一下例外處理


上一篇
Python 微進階 Day14 - import
下一篇
Python 微進階 Day16 - try except(例外處理) - 2 - assert、with
系列文
Python 微進階31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言