python中錯誤和異常處理

錯誤和異常處理


在python中一共有2種錯誤:一種是語法錯誤,另外一種是異常。

語法錯誤


語法錯誤也叫做解析錯誤,是指python無法正確的識別代碼的造成的。根本原因在于人的行為:手殘,腦殘和眼殘的行為。

解決方法:按照正確的語法進行書寫就沒這個錯誤了!

異常


異常是指在語法正確的前提下,程序的報錯就是異常。

它是在程序異常時單獨存在的一個對象,可以對其進行獲取或其他操作

異常的分類


AssertError               斷言語句(assert)失敗
AttributeError            嘗試訪問未知的對象屬性
EOFError                  用戶輸入文件末尾標志EOF(Ctrl+d)
FloatingPointError        浮點計算錯誤
GeneratorExit             generator.close()方法被調用的時候
ImportError               導入模塊失敗的時候
IndexError                索引超出序列的范圍
KeyError                  字典中查找一個不存在的關鍵字
KeyboardInterrupt         用戶輸入中斷鍵(Ctrl+c)
MemoryError               內存溢出(可通過刪除對象釋放內存)
NameError                 嘗試訪問一個不存在的變量
NotImplementedError       尚未實現的方法
OSError                   操作系統產生的異常(例如打開一個不存在的文件)
OverflowError             數值運算超出最大限制
ReferenceError            弱引用(weak reference)試圖訪問一個已經被垃圾回收機制回收了的對象
RuntimeError              一般的運行時錯誤
StopIteration             迭代器沒有更多的值
SyntaxError               Python的語法錯誤
IndentationError          縮進錯誤
TabError                  Tab和空格混合使用
SystemError               Python編譯器系統錯誤
SystemExit                Python編譯器進程被關閉
TypeError                 不同類型間的無效操作
UnboundLocalError         訪問一個未初始化的本地變量(NameError的子類)
UnicodeError              Unicode相關的錯誤(ValueError的子類)
UnicodeEncodeError        Unicode編碼時的錯誤(UnicodeError的子類)
UnicodeDecodeError        Unicode解碼時的錯誤(UnicodeError的子類)
UnicodeTranslateError     Unicode轉換時的錯誤(UnicodeError的子類)
ValueError                傳入無效的參數
ZeroDivisionError         除數為零

常見的錯誤操作:


IndexError 索引錯誤

lists = [1,3,6]
print(lists[3])

KeyError 鍵不存在

dicts = {'gp':'高坡','cr':'曹睿','tw':'唐偉'}
print(dicts['zj'])

nameError 變量不存在

print(ch)

AssertError 斷言錯誤

assert 1>0
assert 3>5

IndentationError縮進錯誤

def myfunc():print('眼殘')print('眼殘')

錯誤異常處理


try:#嘗試實現某個操作,#如果沒出現異常,任務就可以完成#如果出現異常,將異常從當前代碼塊扔出去嘗試解決異常

except 異常類型1:
#解決方案1:用于嘗試在此處處理異常解決問題

except 異常類型2
#解決方案2:用于嘗試在此處處理異常解決問題

except (異常類型1,異常類型2.…)
#解決方案:針對多個異常使用相同的處理方式

excpet:
#解決方案:所有異常的解決方案

else:
#如果沒有出現任何異常,將會執行此處代碼

finally:
#管你有沒有異常都要執行的代碼

處理過程:

try:#嘗試執行代碼區域。#如果沒有錯誤,那就沒啥事了,則執行else區域#如果出現錯誤,拋出錯誤異常對象,由下面的其他塊嘗試接受錯誤

except 異常類型1:
#如果try塊扔出的異常類型和當前指定類型一直,那么則當前塊接收錯誤,并且在當前區域給出錯誤的解決方案。(非必須)
#如果try塊扔出的異常類型和當前指定類型不一直,則將異常扔到下一個代碼塊檢測

except 異常類型2:
#如果try塊扔出的異常類型和當前指定類型一直,那么則當前塊接收錯誤,并且在當前區域給出錯誤的解決方案。(非必須)
#如果try塊扔出的異常類型和當前指定類型不一直,則將異常扔到下一個代碼塊檢測

except 異常類型3:
#如果try塊扔出的異常類型和當前指定類型一直,那么則當前塊接收錯誤,并且在當前區域給出錯誤的解決方案。(非必須)
#如果try塊扔出的異常類型和當前指定類型不一直,則將異常扔到下一個代碼塊檢測

except (異常類型4,異常類型5,…)
#如果try塊扔出的異常類型和當前指任意定類型一直,那么則當前塊接收錯誤,并且在當前區域給出錯誤的解決方案。(非必須)
#如果try塊扔出的異常類型和當前指定類型不一直,則將異常扔到下一個代碼塊檢測

except: #所有異常
#如果其他except塊均不能接受異常對象,那么則當前塊接受異常,并且進行處理即可(非必須)

else:
#try區域代碼沒有任何異常,則else區域執行(非必須)

finally:
#無論出現或者不出現異常,當前塊都會執行

用戶自定義錯誤和自定義拋出錯誤


用戶自定義異常拋出操作

raise  異常對象

用戶自定義異常類

class 異常類名(RuntimeError):
#定義用戶拋出自定義異常對象時可以向對象中傳入的內容信息(由用戶自己決定)
def __init__(self,errormsg...):#接收用戶創建對象時傳入的錯誤信息,并且存入對象,方便后期使用self.errormsg = errormsg#...
pass

在try..except中接收異常對象

try:#嘗試代碼執行區域
except 異常類型 as 異常對象變量:#解決方案
except 異常類型 as 異常對象變量:#解決方案
#....

with語法


在文件操作中用于監控文件的使用狀態,在文件不使用時自動關閉文件操作。

文件操作

try:#程序監控打開的1.txt文件with open('1.txt','r') as fp:#讀取文件text = fp.read()print(text)
except:print('文件操作出錯!')

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455978.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455978.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455978.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

listview 每行后面的小箭頭_主臥帶小衣帽裝修,這幾個裝修方案,你喜歡哪個?...

南京裝修交流圈 - 知乎?www.zhihu.com現在大部分人購買的房子面積還是普遍偏小的,每行每業都有自己的服裝講究,不同的場地、見不同的人等等。家中能有一個衣帽間自然也就是心中所向往和追求的。能夠有獨立的一個房間來做衣帽間當然更好,今天…

【養成好習慣】使用pipreqs導出本項目使用的環境

pipreqs pipreqs可以幫你找到當前項目的所有組件及其版本。就是當別人給你一個程序的時候,你要在自己電腦上運行起來,就需要安裝程序所依賴的組件,總不能自己一個一個找吧。 # 安裝 pip install -i https://pypi.tuna.tsinghua.edu.cn/simpl…

開放醫療交通大數據技術 服務于公共便民領域

孫丕恕還建議,交通擁堵的數據也可以開放,孫丕恕介紹,目前已有導航軟件有部分數據,但還有些滯后,如果能夠做到實時更新數據,那么也可以為出行者避開擁堵,節約時間。此外,如果二手車的…

Nagios_在不同平臺下的安裝

Nagios 是一款開源的免費網絡監視工具,致力于打造符合行業標準的 IT 基礎架構的監控系統。Nagios 提供了服務器、網絡和應用的完整的 IT 監控和報警,可以有效監控 Windows、Linux 和 Unix 的主機狀態,以及交換機、路由器、打印機等網絡設備。…

python中的模塊和包

模塊和包 一個模塊就是一個包含python代碼的文件。一個文件就是一個模塊 為什么要使用模塊 1.現在程序開發文件比較大,都放在一個文件中維護不方便,拆分成多個文件方便維護與管理 2.模塊可以增加代碼的重用率 3.模塊可以當作命名空間如何定義自己的模塊 …

2005年全球H.264編解碼器薈萃

2005年全球H.264編解碼器薈萃videosky.9126.com Peter Lee 2005-0920【摘要】H.264/AVC作為最新的視頻編碼標準,研究領域和產業界都非常看好該標準。尤其是產業界,針對H.264的軟硬件編解碼器可謂是百花齊放、百家爭鳴。本文中,筆者對2005年全…

【Tensorflow】基于卷積神經網絡實現車牌的識別

引言: 過去幾周我一直在涉足深度學習領域,尤其是卷積神經網絡模型。最近,谷歌圍繞街景多位數字識別技術發布了一篇不錯的paper。該文章描述了一個用于提取街景門牌號的單個端到端神經網絡系統。然后,作者闡述了基于同樣的網絡結構…

腳本啟動顯示查詢頻繁被服務器防御_面對CC攻擊,該如何進行防御

網站被攻擊是一件十分讓人惱火的事情,不僅僅是讓網站速度變慢、訪問異常,導致用戶體驗變差,用戶大量流失,而且還會導致網站關鍵詞排名下降甚至被降權,極大干擾了網站的正常穩定運行。那面對CC攻擊,該如何進…

面對SDN/NFV部署挑戰 網絡廠商能做什么?

近年來,隨著云計算的不斷發展,網絡虛擬化受到廣泛關注,而作為網絡虛擬化的實現方式,SDN自誕生之日起就擔負著網絡變革的使命。那么,SDN技術的驅動力是什么?SDN在引入現網的過程中,如何實現平滑無…

python中的tkinter模塊

tkinter介紹 tkinter是python自帶的GUI庫,是對圖形庫TK的封裝 tkinter是一個跨平臺的GUI庫,開發的程序可以在win,linux或者mac下運行 除此之外還存在很多圖形庫,例如 pythonWin 僅適合window的界面編程庫 wxPython 第三方界面編…

PAT甲題題解-1011. World Cup Betting (20)-誤導人的水題。。。

題目不嚴謹啊啊啊啊式子算出來結果是37.975樣例輸出的是37.98我以為是四舍五入的啊啊啊&#xff0c;所以最后輸出的是sum0.005結果告訴我全部錯誤啊結果直接保留兩位小數就可以了啊啊啊啊 水題也不要這么坑人啊啊啊啊 #include <iostream> #include <algorithm> #i…

【Django】文件上傳以及celery的使用

上傳文件、異步、初始化腳本 面試題&#xff1a; 項目中的靜態文件處理&#xff08;JS/CSS/image&#xff09; 自己在機房內優化的方法&#xff1a;1. Nginx/lighttpd(lighty-douban)&#xff1a;Nginx 處理靜態資源速度非常快&#xff0c;并且自身還帶有緩存。2. 80: Nginx -&…

Android 查看每個應用的最大可用內存

http://blog.csdn.net/vshuang/article/details/39647167 Android 內存管理 &Memory Leak & OOM 分析 單個應用可用的最大內存 Android設備出廠以后&#xff0c;java虛擬機對單個應用的最大內存分配就確定下來了&#xff0c;超出這個值就會OOM。這個屬性值是定義在…

分析一段H264視頻數據

分析一段H264視頻數據 Posted on 2007-05-31 09:42 vcommon 閱讀(1968) 評論(8) 編輯 收藏 引用 分析 00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01 H264的數據流分為兩種&#xff0c;一種是NAL UNIT stream(RTP),一種是 bits stream, 兩者可以互相轉換。我們分析的這個…

SVN在vs2013中使用

http://download.csdn.net/download/show_594/9112963 內包含VisualSVN 5.0.1的官方原版安裝包及破解文件VisualSVN.Core.L.dll. 使用方法&#xff1a; 1、運行&#xff1a;VisualSVN-5.0.1.msi 進行原版的安裝。 2、打開VisualSVN的安裝路徑。進入其子目錄bin。將壓縮包內的Vi…

springboot springmvc mybatis_12道重點的Spring Boot面試題,幫你整理好了!

今天跟大家分享下SpringBoot常見面試題的知識。最新2020整理收集的一些面試題&#xff08;都整理成文檔&#xff09;&#xff0c;有很多干貨&#xff0c;包含mysql&#xff0c;netty&#xff0c;spring&#xff0c;線程&#xff0c;spring cloud等詳細講解&#xff0c;也有詳細…

【數據分析】快速獲取微博用戶數據,圖片,視頻

功能輸出實例運行環境使用說明 下載腳本安裝依賴程序設置設置數據庫&#xff08;可選&#xff09;運行腳本按需求修改腳本&#xff08;可選&#xff09; 如何獲取user_id添加cookie與不添加cookie的區別&#xff08;可選&#xff09;如何獲取cookie&#xff08;可選&#xff09…

“云計算”越來越重要 但更重要的是“云安全”

據Gartner公司的預測&#xff0c;云安全服務業務繼續保持強勁&#xff0c;2017年最終將達到59億美元的規模&#xff0c;比2016年上漲了21&#xff05;。 云安全服務市場的增長速度將超過整體信息安全市場。Gartner表示&#xff0c;電子郵件的安全性&#xff0c;網絡安全和身份識…

HTML中Head頭

HTML中Head頭 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>網頁標題</title> </head> <body>網頁顯示內容 </body> </html>HEAD標簽里面負責對網頁進行一些設置以及…

H.264的兩個概念:DC系數和AC系數。 MV預測過程詳解(附圖)

在做熵編碼之前&#xff0c;先明確兩個概念&#xff1a;DC系數和AC系數。 量化后得到的仍是64個系數&#xff0c;量化并沒有改變系數的性質。大家知到DCT變換是將數據域從時&#xff08;空&#xff09;域變換到頻域&#xff0c;在頻域平面上變換系數是二維頻域變量u和v的函數。…