# 異常處理 ###### tags: `人生苦短,我學Python` ## 異常概述 :::success 在程式運行途中,經常會遇到各式各樣的錯誤,這些錯誤被統稱為異常。這類錯誤大部分都是SyntaxError : invaild syntax(無效的語法) ::: * 舉例 ```shell= NameError: name 'sss' is not defined ``` ## 異常處理語句,使用try...except :::success ```python= try: block1 except [ExceptionName[as alias]]: block2 ``` :bulb: block1表示可能出錯的程式碼區塊 :bulb: ExceptionName[as alias]: 可選參數,用於要指定捕獲的異常 ::: * 舉例 ```python= 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 輸入錯誤" ``` * 如果需要同時處理多個異常...... ```python= # 複製上面的部分 if __name__ == '__main__': try: divsion() except (ValueError, ZeroDivisionError) as e: print("Error: ", e) ```  * 這樣就能印出是出了甚麼問題 ## 異常處理語句,使用try...except...else * 在上面的程式碼加上 ```python= else: print("毫無錯誤") # number # num不等於0 # 毫無錯誤 ``` ## 異常處理語句,使用try...except...finally * finally加上後,代表不論發生甚麼狀況,都會執行這些程式碼 ```python= finally: print("already") ``` ## 使用raise語句拋出異常 :::warning ```python= raise [ExceptionName[(reason)]] ``` ::: * 舉例,可以修改成...... ```python= def divsion(): nums = int(input()) if nums >= 0: print("num 大於 0") if nums == 5: raise ValueError("Nope") # 5 # num 大於 0 # 輸入錯誤 Nope ``` {%hackmd S1DMFioCO %}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up