Python警告異常 錯誤漏洞 疑難雜癥 解決辦法


相比其它編程語言,Python 輸齣錯誤 異常提示信息算是比較齊的。

萬事無絕對,世上本無完美的事物,仍需對異常作進一步的處理。

注意,少用以下代碼處理異常:

try:
    do some thing
except:
    pass
 
try:
    do some thing
except Exception:
    pass
					

由於這會捕獲所有異常,因此,抑製瞭源代碼的所有功能性不足 Bug,不利於後期調試。

以下是一些 Python 錯誤 異常常見解決辦法或策略:

批量采集


采用專有進程批量采集,所有可能的錯誤 異常 一般信息。

之後再過濾齣錯誤 異常,一條條加以手動修正。

此方式同常用編程,log 文件功能類似。

隻是添加瞭自動化過濾能力,且進程獨立。

提示信息


某些錯誤 異常無法避免且偶爾齣現,可在適當位置輸齣其提示信息。

若有可能的話,後期想辦法解決;有些問題,可能一時或永遠無法解決 (或找到解決辦法)。

由於提示信息被輸齣到調試後端,對用戶而言不可見;盡可能通過批量采集獲取,方便後期分析錯誤 異常提示原因。

強製展示


某些異常無法避免且較少齣現,可嚮用戶強製展示信息提示對話框。

若有可能,後期再想辦法解決。

某些異常是很難解決的,或由無法避免的外部原因導緻。

注意:可嚮用戶強製展示這些異常,增強用戶對應用程序的理解 信任,參與異常的解決過程。

無聲漏洞


由於應用程序設計缺陷、不當參數、編程語言無法理解的語法 變量、編程語言的設計缺陷、等原因造成的異常。

這種異常可能沒有提示信息 (或信息不足),如閃崩、卡死、內存突然大幅升高、有規律性的偶爾齣錯、等等。

注意:無聲漏洞本身並非完全無聲,包括:調試方法不對、調試者沒注意到、應用場景不當或沒找到調試入口。

譬如:應用已退齣來不及輸齣異常提示、異常代碼目前不使用、上下文關係不明確、 縮進錯誤不明顯。

無聲漏洞要花不少時間來解決,需開發者本人、對應用場景理解很深的人或行業專傢的深度參與。

此類異常要徹底解決 (或改良),否則,彆說影響用戶體驗,可能連正常使用都成問題。

若某一問題長時間無法被解決且對用戶體驗影響極差,此應用程序完瞭。

要體現一個程序員的水平,也就是修正此類問題。

代碼問題


在編寫源代碼時,存在各種考慮不周的異常很正常。

源代碼異常,由開發者解決最好。

對於開源軟件,使用者可以自已想辦法解決。

若是閉源軟件,在沒有參考資料的情況下,一般很難解決。

多種入口


當源代碼存在嚴重且難於修正的異常時,可采用多版本或多種 IDE、多種編譯 打包 分發工具、等作為測試入口調試。

可測試整個工程、單模塊、單功能,甚至對每個函數、每行代碼進行原子化調試。

同樣是 Python 技術,在 CPython Cython PyInstaller 下是有差異的。

不同的 CPython 版本之間,也有一些差異。

並行 IDE


對於多入口調試,進行單工程 多版本 柔性 並行開發,是有必要的。

比較式開發,便於找齣不同版本之間的共性 差異;特彆是將工程分為源代碼版、調試版、發布版、新版、舊版、穩定版等。

如僅將 Python 2.7 (存在很多現成技術 參考資源) 作為比較參考源,3.4 3.5 3.6 之後的版本隻要穩定、操作係統 (或用戶和應用場景) 支持,都可以並行推進。

多版本柔性 並行開發不能要求所有版本權重都一樣,相對傳統 IDE,推薦使用 數字 IDE

開發效率


開發新功能源代碼時,開發效率、調試時間及調試頻率要適當。

開發很多新功能卻很少調試或調試時間花費少,有時會産生意料不到的情況或 Bug。

尤其當齣現程序架構、開發邏輯、編程語言、新舊框架或編譯器兼容性導緻的無聲漏洞,調試時會很頭痛。

這也是 Python 為什麼比 Java C/C++ 等編程語言先天性存在開發優勢的原因,編寫更少的代碼卻能獲得更多的功能。

相同功能下 Python 源代碼量隻有 C/C++ 代碼量的 20 - 30%,當使用 Cython 編譯器 把 Python 代碼轉換成 C 語言中間代碼時就能看到。

另請參閱:

Python 編程 盲區死角 注意事項 解決辦法

程序漏洞和使用場景 設備硬件 綫程進程的關係 産生原因

PySide2 PyQt5 錯誤異常 調試漏洞 疑難雜癥 解決辦法匯總

版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。