Python 例外處理 Exception Handling

首頁 >> Research >> 程式設計 >> Python 例外處理 Exception Handling

在程式設計中,

多少都會遇到錯誤,

這些錯誤發生的時候要做何種應對,

就得靠今天的主題:

Python 例外處理 Exception Handling

此處以 try … exception …. 為範例來說明。

try:
    tmpuser = User.objects.get(username=username)
    if tmpuser.is_active:
        messages.add_message(request, messages.ERROR, '密碼錯誤')
    else:
        messages.add_message(request, messages.ERROR, '帳號未啟用,請至註冊信箱收取認證信')
    return redirect('Login')
except User.DoesNotExist:
    messages.add_message(request, messages.ERROR, '無此帳號')
    return redirect('Login')

上面是登入機制的一個例外處理範例,
當 User.DoesNotExist (該使用者不存在)的時候,
就顯示訊息 ‘無此帳號’,
若要針對其他錯誤進行不同的動作,
繼續新增 except Exception: 即可,
官方文件針對 Built-in Exceptions 也有說明,
有興趣的話可以點擊進去看。

若為資料庫連線或者檔案處理中途發生了錯誤,
或者程式並沒有遇到錯誤,
而這些資源需要被釋放避免不必要的浪費,
可以透過 finally 讓程式最後無論如何都會執行此區塊中的程式碼,
不管是否有遇到錯誤,程式碼必然會執行 finally 區塊。
寫法可參考底下範例:

try:
    tmpuser = User.objects.get(username=username)
    if tmpuser.is_active:
        messages.add_message(request, messages.ERROR, '密碼錯誤')
    else:
        messages.add_message(request, messages.ERROR, '帳號未啟用,請至註冊信箱收取認證信')
    return redirect('Login')
except User.DoesNotExist:
    messages.add_message(request, messages.ERROR, '無此帳號')
finally:
    messages.add_message(request, messages.ERROR, '釋放資源')
    return redirect('Home')

除了上述官方文件的 Built-in exceptions 之外,

也能夠自訂例外物件,

自訂的物件必須要繼承自Exception類別,

不過這屬於較為進階的用法,

在此處入門的教學就不多談論,

有機會的話再另行介紹。



================================
分享與讚美,是我們繼續打拼的原動力.
若文章對您有幫助,望請不吝按讚或分享.
或者對影片有興趣可以訂閱頻道接收通知
================================
YouTube 頻道
FB 粉絲專頁
================================

guangyaw

重點主題: 程式設計: Python , Django,Android 工具與軟體: Open edX,Linux工具,Blender教學 分享各地美景與產品使用心得,遊戲實況,甚至影視戲劇等, 您的訂閱就是頻道成長的原動力。 YouTube 頻道: https://youtube.com/xyawli

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *