Python中try except用法 異常處理語句try-except在Python中的實踐

pythontry-except用于處理異常,基本結(jié)構(gòu)是用try包裹可能出錯代碼并用except捕獲,推薦指定具體異常類型如zerodivisionerror;多個異常可分別處理或統(tǒng)一處理如except (valueerror, typeerror);else在無異常時執(zhí)行,finally無論是否異常都會執(zhí)行,適合資源清理;獲取錯誤信息可用except exception as e記錄具體內(nèi)容,實際開發(fā)建議使用Logging模塊代替print

python編程中,try-except語句是處理程序運行過程中可能出現(xiàn)錯誤的重要工具。它能幫助我們捕獲異常并做出相應(yīng)處理,避免程序直接崩潰。

基本用法:捕捉最常見的異常

最簡單的try-except結(jié)構(gòu)就是把可能出錯的代碼放到try塊中,然后用except來捕獲異常。例如:

try:     x = 1 / 0 except:     print("這里發(fā)生了錯誤")

上面這段代碼嘗試做除以零的操作,這會觸發(fā)一個ZeroDivisionError。因為有except的存在,程序不會崩潰,而是輸出提示信息。

但這種寫法會“通吃”所有異常,不太推薦。更穩(wěn)妥的方式是指定要捕獲的異常類型:

立即學(xué)習(xí)Python免費學(xué)習(xí)筆記(深入)”;

try:     x = 1 / 0 except ZeroDivisionError:     print("不能除以零")

這樣只有遇到特定錯誤時才會被捕獲,其他類型的錯誤仍然會拋出,便于排查。

多個異常的處理方式

有時候你可能會遇到多種不同的異常,可以用多個except塊來分別處理:

try:     x = int(input("請輸入一個數(shù)字: "))     y = 10 / x except ValueError:     print("輸入的不是數(shù)字") except ZeroDivisionError:     print("不能除以零")

這樣做的好處是可以根據(jù)不同錯誤給出不同提示或處理邏輯。如果你希望統(tǒng)一處理多個異常,也可以寫成:

except (ValueError, TypeError):     print("輸入有問題")

這樣多個異常都會進入同一個分支處理。

finally 和 else 的作用別忽視

除了try和except,還有兩個常用的配套關(guān)鍵字:else和finally。

  • else:當(dāng)try塊中沒有發(fā)生任何異常時執(zhí)行。
  • finally:無論是否發(fā)生異常,都會執(zhí)行,常用于資源清理(比如關(guān)閉文件、斷開數(shù)據(jù)庫連接等)。

示例:

try:     f = open("test.txt", "r") except FileNotFoundError:     print("文件沒找到") else:     print("文件成功打開") finally:     print("不管怎樣,我都會執(zhí)行")

即使前面已經(jīng)捕獲了異常或者順利執(zhí)行完,finally里的代碼總會跑一遍。這對于確保資源釋放非常有用。

注意:不要在finally里寫返回值或者修改狀態(tài),容易引起混亂。

實戰(zhàn)建議:幾個實用小技巧

  • 打印錯誤信息:可以在except中使用as e獲取具體錯誤內(nèi)容:

    except Exception as e:     print("出錯了:", e)
  • 避免過度使用try-except:并不是所有地方都需要異常捕獲,只應(yīng)在你預(yù)期可能出現(xiàn)問題的地方使用,否則會讓調(diào)試變得更困難。

  • 記錄日志比print更好:實際項目中建議用logging模塊代替print,方便后續(xù)分析問題。


基本上就這些。合理使用try-except可以提升程序的健壯性,但也別濫用。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊9 分享