溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python異常和錯(cuò)誤有哪些區(qū)別

發(fā)布時(shí)間:2020-09-09 14:12:42 來(lái)源:億速云 閱讀:234 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下python異常和錯(cuò)誤有哪些區(qū)別,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

python異常和錯(cuò)誤有什么區(qū)別

1. 錯(cuò)誤

從軟件方面來(lái)說(shuō),錯(cuò)誤是語(yǔ)法或是邏輯上的。語(yǔ)法錯(cuò)誤指示軟件的結(jié)構(gòu)上有錯(cuò)誤,導(dǎo)致不能被解釋器解釋或編譯器無(wú)法編譯。這些錯(cuò)誤必須在程序執(zhí)行前糾正。當(dāng)程序的語(yǔ)法正確后,剩下的就是邏輯錯(cuò)誤了。邏輯錯(cuò)誤可能是由于不完整或是不合法的輸入所致;在其他情況下,還可能是邏輯無(wú)法生成,計(jì)算,或是輸出結(jié)果需要的過(guò)程無(wú)法執(zhí)行。這些錯(cuò)誤通常分別被稱為域錯(cuò)誤和范圍錯(cuò)誤。

當(dāng) Python 檢測(cè)到一個(gè)錯(cuò)誤時(shí),解釋器就會(huì)指出當(dāng)前流已經(jīng)無(wú)法繼續(xù)執(zhí)行下去,這時(shí)候就出現(xiàn)了異常。

2. 異常

對(duì)異常的最好描述是: 它是因?yàn)槌绦虺霈F(xiàn)了錯(cuò)誤而在正??刂屏饕酝獠扇〉男袨椤_@個(gè)行為又分為兩個(gè)階段: 首先是引起異常發(fā)生的錯(cuò)誤,然后是檢測(cè)(和采取可能的措施)階段。

第一個(gè)階段是在發(fā)生了一個(gè)異常條件(有時(shí)候也叫做例外的條件)后發(fā)生的。只要檢測(cè)到錯(cuò)誤并且意識(shí)到異常條件,解釋器會(huì)引發(fā)一個(gè)異常。引發(fā)也可以叫做觸發(fā)或者生成,解釋器通過(guò)它通知當(dāng)前控制流有錯(cuò)誤發(fā)生。

Python 也允許程序員自己引發(fā)異常,無(wú)論是 Python 解釋器還是程序員引發(fā)的,異常就是錯(cuò)誤發(fā)生的信號(hào),當(dāng)前流將被打斷,用來(lái)處理這個(gè)錯(cuò)誤并采取相應(yīng)的操作,這就是第二階段。

對(duì)異常的處理發(fā)生在第二階段。異常引發(fā)后,可以調(diào)用很多不同的操作,可以是忽略錯(cuò)誤(記錄錯(cuò)誤但不采取任何措施, 采取補(bǔ)救措施后終止程序),或是減輕問(wèn)題的影響后設(shè)法繼續(xù)執(zhí)行程序。所有的這些操作都代表一種繼續(xù),或是控制的分支,關(guān)鍵是程序員在錯(cuò)誤發(fā)生時(shí)可以指示程序如何執(zhí)行。

類似 Python 這樣支持引發(fā)和處理異常(這更重要)的語(yǔ)言,可以讓開(kāi)發(fā)人員可以在錯(cuò)誤發(fā)生時(shí)更直接地控制它們。程序員不僅僅有了檢測(cè)錯(cuò)誤的能力,還可以在它們發(fā)生時(shí)采取更可靠的補(bǔ)救措施。

由于有了運(yùn)行時(shí)管理錯(cuò)誤的能力,應(yīng)用程序的健壯性有了很大的提高。

異常和異常處理并不是什么新概念。它們同樣存在于 Ada,Modula-3,C++,Eiffel,以及 Java 中。異常的起源可以追溯到處理系統(tǒng)錯(cuò)誤和硬件中斷這類異常的操作系統(tǒng)代碼。

在 1965 年左右,PL/1 作為第一個(gè)支持異常的主要語(yǔ)言出現(xiàn),而異常處理是作為一個(gè)它提供的軟件工具。和其他支持異常處理的語(yǔ)言類似,Python 采用了 “try/嘗試” 塊和 “catching/捕獲” 塊的概念,而且它在異常處理方面更有”紀(jì)律性”。

我們可以為不同的異常創(chuàng)建不同的處理器,而不是盲目地創(chuàng)建一個(gè)”catch-all/捕獲所有”的代碼。

以上是python異常和錯(cuò)誤有哪些區(qū)別的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI