導航:首頁 > 編程語言 > python的異常

python的異常

發布時間:2022-02-24 17:18:23

python 如何跳過異常繼續執行

下面有兩種解決方法,第一種是類似if..else..;另外一種是使用語句來實現繼續執行;

方法一:使用try...except...語句,類似於if...else...,可以跳過異常繼續執行程序,這是Python的優勢

用法如下:

拓展資料

異常處理特點:

1.在應用程序遇到異常情況(如被零除情況或內存不足警告)時,就會產生異常。

2.發生異常時,控制流立即跳轉到關聯的異常處理程序(如果存在)。

3.如果給定異常沒有異常處理程序,則程序將停止執行,並顯示一條錯誤信息。

4.可能導致異常的操作通過 try 關鍵字來執行。

5.異常處理程序是在異常發生時執行的代碼塊。在 C# 中,catch 關鍵字用於定義異常處理程序。

6.程序可以使用 throw 關鍵字顯式地引發異常。

7.異常對象包含有關錯誤的詳細信息,其中包括調用堆棧的狀態以及有關錯誤的文本說明。

8.即使引發了異常,finally 塊中的代碼也會執行,從而使程序可以釋放資源。

② Python中錯誤與異常的規范

8. 錯誤和異常
至今為止還沒有進一步的談論過錯誤信息,不過在你已經試驗過的那些例子中,可能已經遇到過一些。Python 中(至少)有兩種錯誤:語法錯誤和異常( syntax errors 和 exceptions )。
8.1. 語法錯誤
語法錯誤,也被稱作解析錯誤,也許是你學習 Python 過程中最常見抱怨:
>>> while True print('Hello world')
File "
", line 1, in ?
while True print('Hello world')
^
SyntaxError: invalid syntax
語法分析器指出錯誤行,並且在檢測到錯誤的位置前面顯示一個小「箭頭」。 錯誤是由箭頭 前面 的標記引起的(或者至少是這么檢測的): 這個例子中,函數 print() 被發現存在錯誤,因為它前面少了一個冒號( ':' )。 錯誤會輸出文件名和行號,所以如果是從腳本輸入的你就知道去哪裡檢查錯誤了。

③ Python異常

這段代碼在matplotlib 2.0.2 運行正常,會不會是你的matplotlib太舊了?

④ python異常值處理

如果你用 Python 編程,那麼你就無法避開異常,因為異常在這門語言里無處不在。打個比方,當你在腳本執行時按 ctrl+c 退出,解釋器就會產生一個 KeyboardInterrupt 異常。而 KeyError、ValueError、TypeError 等更是日常編程里隨處可見的老朋友。

異常處理工作由「捕獲」和「拋出」兩部分組成。「捕獲」指的是使用 try ... except 包裹特定語句,妥當的完成錯誤流程處理。而恰當的使用 raise 主動「拋出」異常,更是優雅代碼里必不可少的組成部分。

異常分類

BaseException所有異常的基類
Exception常見錯誤的基類
ArithmeticError所有數值計算錯誤的基類
Warning警告的基類

AssertError斷言語句(assert)失敗
AttributeError嘗試訪問未知的對象屬性
DeprecattionWarning關於被棄用的特徵的警告
EOFError用戶輸入文件末尾標志EOF(Ctrl+d)
FloattingPointError浮點計算錯誤
FutureWarning關於構造將來語義會有改變的警告
GeneratorExitgenerator.close()方法被調用的時候
ImportError導入模塊失敗的時候
IndexError索引超出序列的范圍
KeyError字典中查找一個不存在的關鍵字
KeyboardInterrupt用戶輸入中斷鍵(Ctrl+c)
MemoryError內存溢出(可通過刪除對象釋放內存)
NamerError嘗試訪問一個不存在的變數
NotImplementedError尚未實現的方法
OSError操作系統產生的異常(例如打開一個不存在的文件)
OverflowError數值運算超出最大限制
OverflowWarning舊的關於自動提升為長整型(long)的警告
PendingDeprecationWarning關於特徵會被遺棄的警告
ReferenceError弱引用(weakreference)試圖訪問一個已經被垃圾回收機制回收了的對象
RuntimeError一般的運行時錯誤
RuntimeWarning可疑的運行行為(runtimebehavior)的警告
StopIteration迭代器沒有更多的值
SyntaxErrorPython的語法錯誤
SyntaxWarning可疑的語法的警告
IndentationError縮進錯誤
TabErrorTab和空格混合使用
SystemErrorPython編譯器系統錯誤
SystemExitPython編譯器進程被關閉
TypeError不同類型間的無效操作
UnboundLocalError訪問一個未初始化的本地變數(NameError的子類)
UnicodeErrorUnicode相關的錯誤(ValueError的子類)
UnicodeEncodeErrorUnicode編碼時的錯誤(UnicodeError的子類)
UnicodeDecodeErrorUnicode解碼時的錯誤(UnicodeError的子類)
UserWarning用戶代碼生成的警告
ValueError傳入無效的參數
ZeroDivisionError除數為零

⑤ python異常基類

BaseException:所有異常的基類

Exception:常規錯誤的基類

ZeroDivisionError:除(或取模)零(所有數據類型)

AssertionError:斷言語句失敗

AttributeError:對象沒有這個屬性

ImportError:導入模塊/對象失敗

LookupError:無效數據查詢的基類

IndexError:序列中沒有此索引(index)

KeyError:映射中沒有這個鍵

NameError:未聲明/初始化對象(沒有屬性)

SyntaxError:python語法錯誤

IndentationError:縮進錯誤

TypeError:傳入無效的參數

UnicodeError:Unicode相關的錯誤

UnicodeDecodeError:Unicode解碼時的錯誤

UnicodeEncodeError:Unicode編碼時的錯誤

UnicodeTranslateError:Unicode轉換時的錯誤

Warning:警告的基類

SyntaxWarning:可疑的語法的警告

⑥ python如何自定義異常

8.5. 用戶自定義異常
在程序中可以通過創建新的異常類型來命名自己的異常(Python 類的內容請參見 類 )。異常類通常應該直接或間接的從 Exception 類派生,例如:
>>> class MyError(Exception):
... def __init__(self, value):
... self.value = value
... def __str__(self):
... return repr(self.value)
...
>>> try:
... raise MyError(2*2)
... except MyError as e:
... print('My exception occurred, value:', e.value)
...
My exception occurred, value: 4
>>> raise MyError('oops!')
Traceback (most recent call last):
File "
", line 1, in ?
__main__.MyError: 'oops!'
在這個例子中,Exception 默認的 __init__() 被覆蓋。新的方式簡單的創建 value 屬性。這就替換了原來創建 args 屬性的方式。
異常類中可以定義任何其它類中可以定義的東西,但是通常為了保持簡單,只在其中加入幾個屬性信息,以供異常處理句柄提取。如果一個新創建的模塊中需要拋出幾種不同的錯誤時,一個通常的作法是為該模塊定義一個異常基類,然後針對不同的錯誤類型派生出對應的異常子類:
class Error(Exception):
"""Base class for exceptions in this mole."""
pass
class InputError(Error):
"""Exception raised for errors in the input.
Attributes:
expression -- input expression in which the error occurred
message -- explanation of the error
"""
def __init__(self, expression, message):
self.expression = expression
self.message = message
class TransitionError(Error):
"""Raised when an operation attempts a state transition that's not
allowed.
Attributes:
previous -- state at beginning of transition
next -- attempted new state
message -- explanation of why the specific transition is not allowed
"""
def __init__(self, previous, next, message):
self.previous = previous
self.next = next
self.message = message
與標准異常相似,大多數異常的命名都以 「Error」 結尾。
很多標准模塊中都定義了自己的異常,用以報告在他們所定義的函數中可能發生的錯誤。

⑦ python 怎麼列印異常

在項目開發中,異常處理是不可或缺的。異常處理幫助人們debug,通過更加豐富的信息,讓人們更容易找到bug的所在。異常處理還可以提高程序的容錯性。Python中,try-except語句用於捕獲異常。舉一個簡單的例子來闡述try-except語句的使用方法:

try:
print(a*2)
exceptNameError:
print("name'a'isnotdefined")
except:
print("Error")

在try程序段中,我們放入容易出錯的程序;except用於定義捕獲異常的類型,如果沒有則捕獲所有的異常,拋出的異常會與except捕獲異常的類型進行比較,如果相同便執行該except程序段中的語句。可以有多個except語句,來捕獲不同類型的異常。

上面的例子中,由於沒有事先定義變數a就引用,程序會拋出NameError。於是異常會被第一個except捕獲,然後列印出"name'a'isnotdefined"。

⑧ 關於python教程中處理異常的問題

EOF為"文件結束符",在linux終端中按Ctrl-D就是向終端輸入EOF,在windows的cmd中Ctrl-Z是EOF.
而且在輸入後需要按回車鍵.'\n'代表linux的換行符,就是另起一行的符號,直接輸入'\n'只是代表你輸入了'\'字元和'n'字元,是兩個字元.

⑨ python中的異常類的認識理解

9.8. 異常也是類
用戶自定義異常也可以是類。利用這個機制可以創建可擴展的異常體系。
以下是兩種新的,有效的(語義上的)異常拋出形式,使用 raise 語句:
raise Class
raise Instance
第一種形式中,Class 必須是 type 或其派生類的一個實例。第二種形式是以下形式的簡寫:
raise Class()
發生的異常其類型如果是 except 子句中列出的類,或者是其派生類,那麼它們就是相符的(反過來說--發生的異常其類型如果是異常子句中列出的類的基類,它們就不相符)。例如,以下代碼會按順序列印 B,C,D:
class B(Exception):
pass
class C(B):
pass
class D(C):
pass
for cls in [B, C, D]:
try:
raise cls()
except D:
print("D")
except C:
print("C")
except B:
print("B")
要注意的是如果異常子句的順序顛倒過來( execpt B 在最前),它就會列印 B,B,B--第一個匹配的異常被觸發。
列印一個異常類的錯誤信息時,先列印類名,然後是一個空格、一個冒號,然後使用內置函數 str() 將類轉換得到的完整字元串。

⑩ python異常和錯誤的區別

什麼是錯誤?
錯誤分為兩種情況:第一種語法錯誤,代碼不符合解釋器或者編譯器語法;第二種邏輯錯誤,不完整或者不合法輸入或者計算出現問題。
什麼是異常?
所謂的異常就是執行過程中出現萬體導致程序無法執行,同樣分為兩種情況:第一種程序遇到邏輯或者演算法問題;第二種運行過程中計算機錯誤,內存不夠或者IO錯誤。
Python中錯誤和異常有什麼區別?
錯誤是代碼運行前的語法或者邏輯錯誤,語法錯誤在執行前修改,邏輯錯誤無法修改;
而異常分為兩個步驟,異常產生,檢查到錯誤且解釋器認為是異常,拋出異常;第二是異常處理,截獲異常,忽略或者終止程序處理異常。
從軟體方面來說,錯誤是語法或者邏輯上的問題,語法錯誤指示軟體的結構上有錯誤,導致不能被解釋器解釋或者編譯器無法編譯,這些錯誤必須在程序執行前進行糾正;當程序語法正確後,剩下的就是邏輯錯誤問題,邏輯錯誤可能是由於不完整或不合法的輸入導致,在其他情況下,可能是邏輯無法生成、計算或輸出結果需要的過程無法執行。這些錯誤通常分別被稱為域錯誤和范圍錯誤。
當Python檢測到一個錯誤時,解釋器就會指出當前已經無法繼續執行下去,這時就出現異常。
而異常它是因為程序出現了錯誤而在正常控制流以外採取的行為,這個行為分為兩個階段:首先是引起異常發生的錯誤,然後是檢測階段;
第一個階段是在發生了一個異常條件後發生的,只要檢測到錯誤並且意識到異常條件,解釋器會引發一個異常,引發也可以叫作觸發或生成,解釋器通過它通知當前控制流有錯誤發生;
Python也允許程序員自己引發異常,無論是Python解釋器還是程序員引發的,異常就是錯誤發生的信號,當前流將被打斷,用來處理這個錯誤並採取相應的操作,這就是第二個階段。
對異常的處理發生在第二階段,異常引發後,可以調用很多不同的操作,可以是忽視錯誤,或是減輕問題的影響後設法繼續執行程序,所以的這些操作都代表一種繼續,或是控制的分支,關鍵是程序員在錯誤發生時可以指示程序如何執行。
類似Python這樣支持引發和處理異常的語言,可以讓開發人員在錯誤發生時更直接地控制它們,程序員不僅僅有了檢測錯誤的能力,還可以在它們發生時採取更可靠的補救措施。

閱讀全文

與python的異常相關的資料

熱點內容
單片機123是變數嗎 瀏覽:458
c網路應用編程答案 瀏覽:813
數據壓縮與解壓縮技術 瀏覽:856
方舟編譯器開了沒 瀏覽:411
平面演算法和空間有限元 瀏覽:94
javasocket返回 瀏覽:934
真實伺服器是什麼 瀏覽:638
想當程序員中專選什麼專業 瀏覽:807
解壓玩具開出隱藏款 瀏覽:59
php傳參中文亂碼 瀏覽:100
簡述內核編譯過程 瀏覽:474
神舟電腦解壓文件 瀏覽:439
HMI編譯內部錯誤 瀏覽:626
數字編譯器如何編譯單位抽樣公式 瀏覽:716
red5伺服器能幹什麼 瀏覽:493
什麼安卓app支持mkv 瀏覽:469
程序員父母在一起 瀏覽:229
ai打開pdf只有一頁 瀏覽:440
招商銀行app怎麼獲取積分 瀏覽:594
linux下的vi參數命令 瀏覽:267