[問題] 例外(exception)處理的技巧或原則

作者: icetofux   2020-09-08 23:28:38
其實這不是單純python的問題,但python是我慣用的程式語言所以發在這裡。
請問各位先進關於例外處理的"方法",有沒有什麼書、教學或是基本原則可
以推薦?
我目前看過的書對於例外處理都著重於語法上的說明,導致真的要用的時候
try要框多大、那些東西是該except的我沒什麼概念,另外很多人都說
exception可以分離錯誤處理跟商務邏輯,但我看書上的範例卻沒什麼感覺,
好像只是另一種形式的if錯誤測試。到最後code裡好像真的也沒用到什麼
try/except,問題都等到真正程式在執行的時候才會發現一個改一個。
另外因為except後程式會中斷,導致我也不太敢用python做一些需要長時間
運行、穩定性高的程式。這都是源於我對於例外處理的認識不足導致,我想
要克服這個狀況。
謝謝。
作者: remia81   2020-09-09 01:15:00
try except else finally組合起來用可以不中斷
作者: keepingJBJ (keep)   2020-09-09 03:28:00
我的理解上if...else是程式處理對象或物件的邏輯,try
作者: Pieteacher (pieteacher)   2020-09-09 07:57:00
while 搭配 try except 跟 break continues
作者: TuCH (謬客)   2020-09-09 08:16:00
程式出錯了不中斷是要繼續錯下去嗎
作者: icetofux   2020-09-09 09:34:00
如果像是server這類的程式,當某次請求發生錯誤,比起直接中斷,會不會忽略這個請求的後續動作,但繼續服務其他的連線是比較好的選擇@[email protected]
作者: TuCH (謬客)   2020-09-09 09:58:00
如果目的是要不中斷 那就要最外層包一個try 去處理例外
作者: ddavid (謊言接線生)   2020-09-09 11:26:00
Server不中斷也有其極限,最外圈硬包try其實不是好的作法,或者說也不是不行,但內部還是要對小部分把預想到的狀況都各自處理掉,最外圈只接完全沒設想到的狀況當然在沒設想到的狀況發生時硬要Server繼續跑下去也可能風險很大,需要評估取捨比如說硬碟滿了,Server硬跑的結果可能就是後續使用者的操作全部無法紀錄,這樣硬跑結果最後還是全回溯是否有比較好
作者: alvinlin (林矜業)   2020-09-09 19:10:00
程式寫多了就有感覺了。還有你寫反了,有了except程式才不會中斷。
作者: ddavid (謊言接線生)   2020-09-10 16:43:00
樓上說的是例外處理的一般論,但我一直覺得Python根本上的設計有不少成分在幾近強迫使用者採取例外控制流程而非if不少套件根本性地不提供return value而只給exception來處理即便用if也很直覺合理的事情這時候就很容易發生到底是要依循能if就if的概念,接了他的exception後改用return往自己code的更上層傳,還是保持一致性地就接個手做點必要處理後raise繼續往上層這樣的考慮空間
作者: alvinlin (林矜業)   2020-09-11 01:47:00
可能有吧,但又何妨。反正左手右手打到蚊子就是好手,兩手一起也行。我自己是能用if儘量不用exception,但對電腦來說其實不是0就是1沒差別。對套件來說,可能exception比較好外包吧。總之,能達到目的其實都好。

Links booklink

Contact Us: admin [ a t ] ucptt.com