亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:異常和錯誤的處理策略問題

Python:異常和錯誤的處理策略問題

嗶嗶one 2019-02-25 00:30:33
Python 異常和錯誤處理時,try...except 、if...else... 哪個更好一些,為什么? The point is that using try/except statements is in many cases much more natural (more “Pythonic”) than if/else, and you should get into the habit of using them where you can. 這個是《Beginning Python From Novice to Professional, 2nd Edition》里的原話,但 StackOverflow 里又有 Why is “except: pass” a bad programming practice? 我就疑惑了……到底哪個好一些?還是說有更好的方法?
查看完整描述

3 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

異常的時候,使用try...except
正常的程序流程使用 if...else
以數組為例,比如讀取數組下標越界,你的程序中并不期盼由此發展出功能 。

try:
    data=array[x][y][z]
except Exception:
    data=None
#   或者定義任何你不期盼發生的情況下的默認處理 

但是,假如你的程序設計里,數組的越界與否是 功能 具體實現的一部分,那么就應該使用if...else保證語義清晰。

if x< len(array):
    if y< len(array[x]):
    else:
else:

但,也不是絕對,如果可視性與語義沖突,我個人以為 可視性>=語義清晰。比如簡單而又易發的單句越界檢查,即使越界在設計里是異常,但因為if的語句少過try,則我以為可以寫if。
總的來說,raise就是把所有狀態拋出,可以在任意上層處理,if...else 則是就地的代碼分支.

查看完整回答
反對 回復 2019-03-01
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

異常處理當然 try/except

Why is “except: pass” a bad programming practice?

并不是在說 try/except 作為異常處理不好
這應該是在說 except 不catch具體的錯誤 pass 不處理錯誤不好
因為這等于一個異常處理的空殼, 并沒有真的處理異常

查看完整回答
反對 回復 2019-03-01
  • 3 回答
  • 0 關注
  • 534 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號