Python學習筆記之異常

Python用異常對象來表示異常情況,如果異常對象未被處理或捕捉,程序就會回溯(traceback)中止執行。

異常可以在出錯時自動引發,也可以主動引發。

異常被引發后如果不被處理就會傳播至程序調用的地方,直到主程序(全局作用域),如果主程序仍然沒有異常處理,程序會帶著棧跟蹤終止。

raise:引發異常

>>> raise Exception
Traceback (most recent call last):File "<pyshell#1>", line 1, in <module>raise Exception
Exception

? >>> raise Exception("error!!!")
? Traceback (most recent call last):
? File "<pyshell#2>", line 1, in <module>
? raise Exception("error!!!")
? Exception: error!!!

常見內建異常類:

類名描述
Exception所有異常的基類
AttributeError特性引用或賦值失敗時引發
IOError試圖打開不存在文件(包括其他情況)時引發
IndexError在使用序列中不存在的索引時引發
KeyError使用映射中不存在的鍵引發
NameError找不到名字(變量)時引發
SyntaxError在代碼為錯誤形式時引發
TypeError在內建操作或者函數應用于錯誤類型的對象引發?
ValueError在內建操作或者函數應用于正確的對象,但是該對象使用不合適的值引發
ZeroDivision在除法或者模除操作的第二個參數為0時引發

?

自定義異常類:繼承自Exception

class DefException(Exception):pass

?

捕捉異常:使用try/except語句實現>>> try:

    x =  int(input("The first num:"))y = int(input("The second num:"))print(x/y)
except ZeroDivisionError:print("Error")The first num:5
The second num:0
Error
>>> try:x =  int(input("The first num:"))y = int(input("The second num:"))print(x/y)
except ZeroDivisionError:print("Error")
except ValueError:print("TypeError")The first num:5
The second num:o
TypeError

?

用一個塊捕捉多個異常:

>>> try:x =  int(input("The first num:"))y = int(input("The second num:"))print(x/y)
except (ZeroDivisionError,ValueError):print("Error")The first num:5
The second num:0
Error

?

捕捉對象:

>>> try:x =  int(input("The first num:"))y = int(input("The second num:"))print(x/y)
except (ZeroDivisionError,ValueError) as e:print(e)The first num:5
The second num:0
division by zero

?

捕捉所有異常:

try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y)
except:print("some errors")
The first num:5
The second num:
some errors

這種方式會捕捉用戶中止執行的企圖,會隱藏所有程序員未想到并且未做好準備的錯誤。

?

對于異常情況進行處理:

?

#在輸入不合法時循環,直到合法值出現退出循環
while True:try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y)except:print("Error")else:break#運行結果

The first num:5
The second num:0
Error
The first num:6
The second num:3
2.0

?

?finally子句:用在可能的異常后進行清理,不管是否有異常都要執行。在同一個try語句中,不可以和except使用。

x = None
try:x = 1/0
finally:print("cleaning")del x#結果
cleaning
Traceback (most recent call last):File "input.py", line 4, in <module>x = 1/0
ZeroDivisionError: division by zero***Repl Closed***

?

可以在一條語句中組合使用try,except,else,finally

try:x = 1/0else:print("done")
finally:print("cleaning")#運行結果
cleaning***Repl Closed***

?

轉載于:https://www.cnblogs.com/HJhj/p/7423454.html

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

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

相關文章

VSFTP的使用

一、基本安裝 1.安裝服務 yum -y install vsftpd //centos Redhat apt-get install vsftpd //debian ubuntu 2.開啟服務 service vsftpd status //查看狀態&#xff0c;默認是關閉的 service vsftpd start 3.開機隨操作系統啟動 chkconfig vsftpd on4.添加賬號 useradd -d /…

OC Swift混編-Swift.h File not found

https://www.jianshu.com/p/f860fe1718ca 2016.09.13 11:53* 字數 266 閱讀 1935評論 1喜歡 1今天碰到個神坑,本人項目是OC項目,最近開始使用Swift開始替代.但是,在替代的已開始就出現問題了:新建swift文件,然后提示創建bridging-Hearder文件,然后swift可以使用OC代碼了.這些都…

視覺標定,再來一波!!更簡單粗暴!!!!!!

繼續&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 一、四個坐標系簡介和轉換 相機模型為以后一切標定算法的關鍵&#xff0c;只有這邊有相當透徹的理解&#xff0c;對以后的標定算法才能有更好的理解。本人研究了好長時間&#xff0c;幾乎每天…

深入淺出NIO之Selector實現原理

2019獨角獸企業重金招聘Python工程師標準>>> 前言 Java NIO 由以下幾個核心部分組成&#xff1a; 1、Buffer 2、Channel 3、Selector Buffer和Channel在深入淺出NIO之Channel、Buffer一文中已經介紹過&#xff0c;本文主要講解NIO的Selector實現原理。 之前進行sock…

介紹一下畫圖小能手matplotlib。

我們在做完數據分析的時候需要把分析出來的結果&#xff0c;做一個圖形化的形象表達&#xff0c;這里我們就需要用到畫圖小能手matplotlib&#xff0c;下面就演示一下常用的條形圖和折線圖 散點圖 散點圖的做大的作用是研究兩個變量的相關性&#xff08;正相關&#xff0c;負相…

立體視覺標定源代碼C++,簡單粗暴!粗暴·······

疑點解答&#xff1a; 攝像機矩陣由內參矩陣和外參矩陣組成&#xff0c;對攝像機矩陣進行QR分解可以得到內參矩陣和外參矩陣。 內參包括焦距、主點、傾斜系數、畸變系數 &#xff08;1&#xff09; 其中&#xff0c;fx&#xff0c;fy為焦距&#xff0c;一般情況下&#xff…

11. 臨時表

-- 查詢5大洲國家總數 SELECT continent,COUNT(*) FROM country GROUP BY continent;-- 演示臨時表 CREATE TEMPORARY TABLE tmp_table ( continent VARCHAR(20), COUNT INT );INSERT INTO tmp_table SELECT Asia AS continent,COUNT(*) FROM country WHERE continent Asia;…

MongoDB負載信息一目了然 阿里云HDM重磅發布MongoDB監控和診斷功

2019獨角獸企業重金招聘Python工程師標準>>> 混合云數據庫管理&#xff08;HDM&#xff09;的統一監控、告警、診斷功能新增了對MongoDB的支持。 通過直觀的方式將MongoDB多個維度的負載信息統一整合&#xff0c;不僅可以清晰的查看實時負載信息&#xff0c;也可以方…

在iview的Table中添加Select(render)

首先對Render進行分析&#xff0c;在iview官方的文檔中&#xff0c;找到了table插入Button的例子&#xff1a; [javascript] view plaincopy { title: Action, key: action, width: 150, align: center, render: (h, params) > { return h(div, [ h(Butt…

JavaScript中call和apply方法

1 /*2 在js中 call和apply常用于綁定作用域3 */4 //1 簡單的綁定5 function sum(a,b){6 return ab;7 }8 //將sum的功能綁定給test2來執行9 function test2(a,b){ 10 return sum.call(this,a,b); 11 } 12 // call 和apply的區別是 apply接收數組作為參數…

工業機械人運動學正逆解,簡單粗暴!!!!!!

ur機械臂是六自由度機械臂&#xff0c;由D-H參數法確定它的運動學模型&#xff0c;連桿坐標系的建立如上圖所示。 轉動關節θi是關節變量&#xff0c;連桿偏移di是常數。 關節編號 α&#xff08;繞x軸&#xff09; a&#xff08;沿x軸&#xff09; θ&#xff08;繞z軸&am…

python opencv立體測距 立體匹配BM算法

立體標定應用標定數據轉換成深度圖標定 在開始之前&#xff0c;需要準備的當然是兩個攝相頭&#xff0c;根據你的需求將兩個攝像頭進行相對位置的固定&#xff0c;我是按平行來進行固定的&#xff08;如果為了追求兩個雙目圖像更高的生命度&#xff0c;也可以將其按一定鈍角固…

對于python 作用域新的理解

今天看Python習題&#xff0c;看到如下題目 def num():return [lambda x: i*x for i in range(4)] print([m(2) for m in num()])  # 求輸出結果是什么 我看了半天才明白這應該是一個列表生成式&#xff0c;列表中的元素為四個匿名函數&#xff0c;我本以為每個匿名函數應該是…

Vue基礎學習(一)------內部指令

一.v-if v-else v-show 指令 1.v-if v-if:是vue 的一個內部指令&#xff0c;指令用在我們的html中,用來判斷是否加載html的DOM 現在舉個栗子&#xff0c;判斷用戶的登錄操作&#xff0c;用isLogin作為一個判斷字段&#xff0c;登錄成功&#xff0c;就顯示用戶的名稱 代碼&…

【bzoj3555】[Ctsc2014]企鵝QQ 簡單哈希

傳送門 題目分析 題意即求有多少對字符串只相差一個字符&#xff0c;枚舉刪除每個字符后的哈希&#xff0c; 看有多少相等即可。 比如有如下字符串&#xff1a;$Sd123$&#xff0c;其中S部分的哈希值為H&#xff0c;刪除的是d&#xff0c;則原字符串的哈希值為$$(((H * T d) *…

StereoRectify()函數定義及用法畸變矯正與立體校正

畸變矯正是上一篇博文的遺留問題&#xff0c;當畸變系數和內外參數矩陣標定完成后&#xff0c;就應該進行畸變的矯正&#xff0c;以達到消除畸變的目的&#xff0c;此其一。 在該系列第一部分的博文中介紹的立體成像原理中提到&#xff0c;要通過兩幅圖像估計物點的深度信息&a…

死磕 java集合之TreeMap源碼分析(三)- 內含紅黑樹分析全過程

2019獨角獸企業重金招聘Python工程師標準>>> 歡迎關注我的公眾號“彤哥讀源碼”&#xff0c;查看更多源碼系列文章, 與彤哥一起暢游源碼的海洋。 刪除元素 刪除元素本身比較簡單&#xff0c;就是采用二叉樹的刪除規則。 &#xff08;1&#xff09;如果刪除的位置有兩…

Linux:進程實例信息(/proc)

https://blog.csdn.net/test1280/article/details/73632333 Linux:進程實例信息&#xff08;/proc&#xff09; 問幾個問題&#xff1a; 1.怎么知道一個進程對應哪個可執行文件&#xff1f; 2.怎么知道一個進程的資源限制&#xff1f; 3.怎么知道一個進程所處的環境&#xff1f…

四元素理解

旋轉變換_四元數 2017年03月29日 11:59:38 csxiaoshui 閱讀數&#xff1a;5686 1.簡介 四元數是另一種描述三維旋轉的方式&#xff0c;四元數使用4個分量來描述旋轉&#xff0c;四元數的描述方式如下&#xff1a; qsxiyjzk,(s,x,y,z∈?&#xff09;i2j2k2ijk?1 四元數的由…

31、SAM文件中flag含義解釋工具--轉載

轉載&#xff1a;http://www.cnblogs.com/nkwy2012/p/6362996.html SAM是Sequence Alignment/Map 的縮寫。像bwa等軟件序列比對結果都會輸出這樣的文件。samtools網站上有專門的文檔介紹SAM文件。具體地址&#xff1a;http://samtools.sourceforge.net/SAM1.pdf很多人困惑SAM文…