try: except:
except
可以為多組else
、finally
except
依照對應的錯誤類型進行對應的處理
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 IndexError("出現錯誤")
# IndexError: 出現錯誤
# 指定 IndexError 跟指定的錯誤訊息
try:
a = 50
if a >= 10:
raise Exception(f"數字 {a} 超過 10")
except Exception as err:
print("錯誤為:", err)
錯誤為: 數字 50 超過 10
完成一半的挑戰了,再補充一下例外處理