成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 處理錯誤的原則

開發 后端
這是 Python 之禪特別系列的一部分,重點是第十和第十一條原則:沉默的錯誤(或不沉默)。

[[378993]]

這是 Python 之禪特別系列的一部分,重點是第十和第十一條原則:沉默的錯誤(或不沉默)。

處理“異常情況”是編程中爭論最多的問題之一。這可能是因為風險很大:處理不當的錯誤值甚至可以使龐大的系統癱瘓。由于“異常情況”從本質上來說,是測試不足的,但發生的頻率卻令人不快,因此,是否正確處理它們往往可以將一個噩夢般的系統與一個“可以工作”的系統區分開來。

從 Java 的 checked 異常,到 Erlang 的故障隔離,再到 Haskell 的 Maybe,不同的語言對錯誤處理的態度截然不同。

這兩條 Python 之禪是 Python 對這個話題的冥思。

錯誤絕不應該悄悄傳遞...Errors should never pass silently…

當 Python 之禪在 Tim Peters 眼里閃爍而出之前,在維基百科被俗稱為“維基”之前,第一個維基網站 C2 就已經存在了,它是一個編程指南的寶庫。這些原則大多來自于 Smalltalk 編程社區。Smalltalk 的思想影響了許多面向對象的語言,包括 Python。

C2 維基定義了武士原則Samurai Principle:“勝利歸來,要么不歸。”用 Python 人的術語來說,它鼓勵摒棄哨兵值sentinel value,比如用返回 None 或 -1 來表示無法完成任務,而是采用引發異常的方式。一個 None 是無聲的:它看起來像一個值,可以放在一個變量中,然后到處傳遞。有時,它甚至是一個有效的返回值。

這里的原則是,如果一個函數不能完成它的契約,它應該“高調失敗”:引發一個異常。所引發的異常永遠不會看起來像是一個可能的值。它將跳過 returned_value = call_to_function(parameter) 行,并上升到調用棧中,可能使程序崩潰。

崩潰的調試是很直接的:有一個堆棧跟蹤來指示問題以及調用堆棧。崩潰可能意味著程序的必要條件沒有滿足,需要人為干預。它可能意味著程序的邏輯有問題。無論是哪種情況,高調失敗都比一個隱藏的、“缺失”的值要好。用 None 來感染程序的有效數據,直到它被用在某個地方,就如你可能已經知道的,錯誤信息會說 “None 沒有方法進行拆分”。

除非顯式消除Unless explicitly silenced

有時需要顯式地捕獲異常。我們可能會預見到文件中的某些行格式錯誤,并希望以特殊的方式來處理它們,也許可以把它們放在一個“需要人來看看的行”的文件中,而不是讓整個程序崩潰。

Python 允許我們用 except 來捕獲異常。這意味著錯誤可以被顯式消除。這種明確性意味著 except 行在代碼審查中是可見的。質疑為什么應該在這里顯式消除異常并從異常中恢復,是有意義的。自問一下我們是否捕獲了太多或太少的異常也是有意義的。

因為這些全都是明確的,所以有人可以閱讀代碼并了解哪些異常是可以恢復的。

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-01-14 21:37:01

JavaScript開發代碼

2021-04-14 07:08:14

Nodejs錯誤處理

2024-09-23 16:49:32

2010-07-27 15:39:32

telnet smtp

2023-11-30 07:15:36

GolangRecover

2010-10-20 17:37:23

SQL Server連

2021-04-29 09:02:44

語言Go 處理

2015-03-02 16:48:40

數據處理大數據原則

2014-11-17 10:05:12

Go語言

2025-01-16 16:36:00

2011-05-18 13:44:31

MySQL

2024-03-27 08:18:02

Spring映射HTML

2021-03-02 07:31:26

WebApiweb

2023-12-26 22:05:53

并發代碼goroutines

2025-02-10 09:49:00

2010-03-10 14:34:52

Python異常處理

2024-10-07 08:26:05

編程Python異常處理

2024-04-16 12:18:05

編程異常處理錯誤返回

2016-09-07 20:28:17

MySQL存儲數據庫

2010-07-20 13:29:30

Telnet服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久精品 | 久久一二| 国产一区二区影院 | 亚洲精色 | 91久久精品日日躁夜夜躁欧美 | 欧美三级免费观看 | 久久综合一区二区三区 | 二区三区视频 | 久久国产美女视频 | 国产91在线精品 | 久久久久一区二区三区 | 玖操| av入口| 国产精品观看 | 欧美在线播放一区 | 国产精品99久久久久久宅男 | 日韩成人在线播放 | 欧美不卡一区二区 | 欧美精品乱码久久久久久按摩 | 国产高清视频在线观看 | 99精品视频在线观看 | 亚洲综合成人网 | 老司机67194精品线观看 | 免费亚洲视频 | 日韩另类视频 | 亚洲精品一区中文字幕乱码 | 色狠狠一区 | 精品无码久久久久久国产 | 亚洲综合99 | 一区二区不卡高清 | 第四色播日韩第一页 | 91精品国产手机 | 黄色综合 | 亚洲黄色高清视频 | 欧美一区二区在线播放 | 九九热这里| 在线观看免费高清av | 欧美色专区| 欧美视频1区 | 国产综合视频 | 亚洲国产高清免费 |