日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)Python教程:淺談Python異常處理機(jī)制

異常機(jī)制己經(jīng)成為衡量一門(mén)編程語(yǔ)言是否成熟的標(biāo)準(zhǔn)之一,使用異常處理機(jī)制的 Python 程序有更好的容錯(cuò)性,更加健壯。

創(chuàng)新互聯(lián)專注于淮南網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供淮南營(yíng)銷(xiāo)型網(wǎng)站建設(shè),淮南網(wǎng)站制作、淮南網(wǎng)頁(yè)設(shè)計(jì)、淮南網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造淮南網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供淮南網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

對(duì)于計(jì)算機(jī)程序而言,情況就更復(fù)雜了一一沒(méi)有人能保證自己寫(xiě)的程序永遠(yuǎn)不會(huì)出辛苦!就算程序沒(méi)有錯(cuò)誤,你能保證用戶總是按你的意愿來(lái)輸入?就算用戶都是非?!奥斆鞫遗浜稀钡?,你能保證運(yùn)行該程序的操作系統(tǒng)永遠(yuǎn)穩(wěn)定?你能保證運(yùn)行該程序的硬件不會(huì)突然壞掉?你能保證網(wǎng)絡(luò)永遠(yuǎn)通暢……你無(wú)法保證的情況太多了!

對(duì)于一個(gè)程序設(shè)計(jì)人員來(lái)說(shuō),需要盡可能預(yù)知所有可能發(fā)生的情況,盡可能保證程序在所有糟糕的情形下也都可以運(yùn)行。

考慮前面介紹的五子棋程序:當(dāng)用戶輸入下棋坐標(biāo)時(shí),程序要判斷用戶輸入是否合法。如果保證程序有較好的容錯(cuò)性,將會(huì)有如下偽碼:

if 用戶輸入包含除逗號(hào)之外的其他非數(shù)字字符:
    alert 坐標(biāo)只能是數(shù)值
    goto retry
elif 用戶輸入不包含逗號(hào):
    alert 應(yīng)使用逗號(hào)分隔兩個(gè)坐標(biāo)值
    goto retry
elif 用戶輸入的坐標(biāo)值超出了有效范圍:
    alert 用戶輸入的坐標(biāo)應(yīng)位于棋盤(pán)坐標(biāo)之內(nèi)
    goto retry
elif 用戶輸入的坐標(biāo)已有棋子:
    alert "只能在沒(méi)有棋子的地方下棋"
    goto retry
else:
    #業(yè)務(wù)實(shí)現(xiàn)代碼
    ...

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

而且正如前面所提到的,高傲的程序員在開(kāi)發(fā)程序時(shí)更傾向于認(rèn)為:“對(duì),錯(cuò)誤也許會(huì)發(fā)生,但那是別人造成的,不關(guān)我的事”。

如果每次在實(shí)現(xiàn)真正的業(yè)務(wù)邏輯之前,都需要不厭其煩地考慮各種可能出錯(cuò)的情況,針對(duì)各種錯(cuò)誤情況給出補(bǔ)救措施,這是多么乏味的事情啊。程序員喜歡解決問(wèn)題,喜歡開(kāi)發(fā)帶來(lái)的“創(chuàng)造”快感,但不喜歡像一個(gè)“堵漏”工人,去堵那些由外在條件造成的“漏洞”。

對(duì)于構(gòu)造大型、健壯、可維護(hù)的應(yīng)用而言,錯(cuò)誤處理是整個(gè)應(yīng)用需要考慮的重要方面,程序員不能僅僅只做“對(duì)”的事情,程序員開(kāi)發(fā)程序的過(guò)程,是一個(gè)創(chuàng)造的過(guò)程,這個(gè)過(guò)程需要有全面的考慮,僅做“對(duì)”的事情是遠(yuǎn)遠(yuǎn)不夠的。

對(duì)于上面的錯(cuò)誤處理機(jī)制,主要有如下兩個(gè)缺點(diǎn):

無(wú)法窮舉所有的異常情況。因?yàn)槿祟?lèi)知識(shí)的限制,異常情況總比可以考慮到的情況多,總有“漏網(wǎng)之魚(yú)”的異常情況,所以程序總是不夠健壯。

錯(cuò)誤處理代碼和業(yè)務(wù)實(shí)現(xiàn)代碼混雜。這種錯(cuò)誤處理和業(yè)務(wù)實(shí)現(xiàn)混雜的代碼嚴(yán)重影響程序的可讀性,會(huì)增加程序維護(hù)的難度。

程序員希望有一種強(qiáng)大的機(jī)制來(lái)解決上面的問(wèn)題,希望將上面程序改成如下偽碼:

if 用戶輸入不合法:
    alert 輸入不合法
    goto retry
else :
    #業(yè)務(wù)實(shí)現(xiàn)代碼
    ...

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

現(xiàn)在的問(wèn)題是,“用戶輸入不合法”這個(gè)條件怎么定義?當(dāng)然,對(duì)于這個(gè)簡(jiǎn)單的要求,可以使用正則表達(dá)式對(duì)用戶輸入進(jìn)行匹配,當(dāng)用戶輸入與正則表達(dá)式不匹配時(shí)即可判斷“用戶輸入不合法”。但對(duì)于更復(fù)雜的情形,就沒(méi)有這么簡(jiǎn)單了。使用 Python 的異常處理機(jī)制就可以解決這個(gè)問(wèn)題。


新聞名稱:創(chuàng)新互聯(lián)Python教程:淺談Python異常處理機(jī)制
瀏覽路徑:http://www.5511xx.com/article/dhoeijj.html