91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Python異常處理機制

發布時間:2020-08-26 09:22:44 來源:億速云 閱讀:319 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關什么是Python異常處理機制,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

異常機制己經成為衡量一門編程語言是否成熟的標準之一,使用異常處理機制的 Python 程序有更好的容錯性,更加健壯。

對于計算機程序而言,情況就更復雜了一一沒有人能保證自己寫的程序永遠不會出辛苦!就算程序沒有錯誤,你能保證用戶總是按你的意愿來輸入?就算用戶都是非常“聰明而且配合”的,你能保證運行該程序的操作系統永遠穩定?你能保證運行該程序的硬件不會突然壞掉?你能保證網絡永遠通暢……你無法保證的情況太多了!

對于一個程序設計人員來說,需要盡可能預知所有可能發生的情況,盡可能保證程序在所有糟糕的情形下也都可以運行。

考慮前面介紹的五子棋程序:當用戶輸入下棋坐標時,程序要判斷用戶輸入是否合法。如果保證程序有較好的容錯性,將會有如下偽碼:

if 用戶輸入包含除逗號之外的其他非數字字符:
    alert 坐標只能是數值
    goto retry
elif 用戶輸入不包含逗號:
    alert 應使用逗號分隔兩個坐標值
    goto retry
elif 用戶輸入的坐標值超出了有效范圍:
    alert 用戶輸入的坐標應位于棋盤坐標之內
    goto retry
elif 用戶輸入的坐標已有棋子:
    alert "只能在沒有棋子的地方下棋"
    goto retry
else:
    #業務實現代碼
    ...

上面代碼還未涉及任何有效處理,只是考慮了 4 種可能的錯誤,代碼量就己經急劇增加了。但實際上,上面考慮的 4 種情況還遠未包括所有可能的情況(事實上,世界上的意外是不可窮舉的),程序可能發生的異常情況總是多于程序員所能考慮到的意外情況。

而且正如前面所提到的,高傲的程序員在開發程序時更傾向于認為:“對,錯誤也許會發生,但那是別人造成的,不關我的事”。

如果每次在實現真正的業務邏輯之前,都需要不厭其煩地考慮各種可能出錯的情況,針對各種錯誤情況給出補救措施,這是多么乏味的事情啊。程序員喜歡解決問題,喜歡開發帶來的“創造”快感,但不喜歡像一個“堵漏”工人,去堵那些由外在條件造成的“漏洞”。

對于構造大型、健壯、可維護的應用而言,錯誤處理是整個應用需要考慮的重要方面,程序員不能僅僅只做“對”的事情,程序員開發程序的過程,是一個創造的過程,這個過程需要有全面的考慮,僅做“對”的事情是遠遠不夠的。

對于上面的錯誤處理機制,主要有如下兩個缺點:

無法窮舉所有的異常情況。因為人類知識的限制,異常情況總比可以考慮到的情況多,總有“漏網之魚”的異常情況,所以程序總是不夠健壯。

錯誤處理代碼和業務實現代碼混雜。這種錯誤處理和業務實現混雜的代碼嚴重影響程序的可讀性,會增加程序維護的難度。

程序員希望有一種強大的機制來解決上面的問題,希望將上面程序改成如下偽碼:

if 用戶輸入不合法:
    alert 輸入不合法
    goto retry
else :
    #業務實現代碼
    ...

上面偽碼提供了一個非常強大的“if 塊”,即程序不管輸入錯誤的原因是什么,只要用戶輸入不滿足要求,程序就一次處理所有的錯誤。這種處理方法的好處是,使得錯誤處理代碼變得更有條理,只需在一個地方處理錯誤。

現在的問題是,“用戶輸入不合法”這個條件怎么定義?當然,對于這個簡單的要求,可以使用正則表達式對用戶輸入進行匹配,當用戶輸入與正則表達式不匹配時即可判斷“用戶輸入不合法”。但對于更復雜的情形,就沒有這么簡單了。使用 Python 的異常處理機制就可以解決這個問題。

看完上述內容,你們對什么是Python異常處理機制有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜良县| 江山市| 万宁市| 玉门市| 许昌县| 潜山县| 墨竹工卡县| 三河市| 延安市| 陆良县| 临夏市| 固原市| 兴隆县| 沁源县| 泽普县| 施秉县| 大石桥市| 石渠县| 凌源市| 莱阳市| 贵阳市| 肃宁县| 金寨县| 防城港市| 汉中市| 堆龙德庆县| 滦南县| 池州市| 安达市| 大名县| 鲜城| 错那县| 雅江县| 东乡县| 万年县| 兰溪市| 日喀则市| 中山市| 芜湖市| 高台县| 济源市|