官术网_书友最值得收藏!

2.10 Python中的異常處理

在編寫Python策略時,難免會出現錯誤,理想的情況是在策略啟動時,通過Python自檢發現錯誤。但實際上Python并不能主動找出所有的錯誤,有一些錯誤只有在運行過程中才能被發現,所以需要使用恰當的方法將錯誤源及相關信息呈現出來,并且對錯誤進行修正,從而提高策略的健壯性。

2.10.1 語法錯誤

語法錯誤是初學者經常遇到的情況。例如,少寫了括號,關鍵字True的字符'T'需要大寫,等等。不過這種錯誤在Python啟動時,通過對代碼的解析會自動終止程序,并且報出錯誤位置和錯誤原因。示例代碼如下:

輸出結果如下:

在上述代碼中,第1行代碼末尾缺少英文冒號“:”,導致策略語法錯誤,觸發了一個異常事件。當異常發生時,策略會終止運行,并且給出錯誤位置和錯誤原因。

2.10.2 異常錯誤

異常錯誤比較隱蔽,通常在策略運行過程中才能被發現。例如,在進行除法運算時除數為0,將一個值為空值的變量(None)當作字典變量使用,將整型變量和字符串變量相加,使用未定義的變量參與運算,等等。示例代碼如下:

輸出結果如下:

在上述代碼中,代碼語法并沒有錯誤,但觸發了一個異常事件,根據錯誤提示可知錯誤原因:在第2行代碼中,0不能作除數。

2.10.3 異常捕獲

為了檢索隱藏的異常錯誤,或者為了避免異常錯誤的發生,可以使用try…except語句捕獲異常。當執行try語句中的代碼塊時,如果發生異常錯誤,則會被異常檢測捕獲,示例代碼如下。在下面第4行代碼中,捕獲異常錯誤信息Exception,并且使用as關鍵字將其重命名為變量e。

輸出結果如下:

在上述代碼中,在程序運算到10/0時,并沒有使程序停止,而是打印了一條日志,并且最后一條日志Log("hello world")也執行了。異常捕獲不僅可以提示代碼錯誤的原因,還可以防止程序因為異常而終止運行。

主站蜘蛛池模板: 句容市| 佛坪县| 公主岭市| 宁都县| 馆陶县| 当雄县| 句容市| 安化县| 房产| 赣州市| 盈江县| 普格县| 龙陵县| 承德市| 库尔勒市| 闽清县| 宝鸡市| 元朗区| 根河市| 宁都县| 浏阳市| 黔东| 文成县| 辽源市| 陈巴尔虎旗| 兴仁县| 大荔县| 天峨县| 应城市| 瑞金市| 溧阳市| 托克托县| 兰州市| 贵州省| 新泰市| 霞浦县| 昌乐县| 明光市| 广汉市| 嵊州市| 武隆县|