python異常處理

2021-10-07 22:08:03 字數 4003 閱讀 1788

此案例用:python2.7

1、異常基礎

在程式設計過程中為了增加友好性,在程式出現bug時一般不會將錯誤資訊顯示給使用者,而是現實乙個提示的頁面,通俗來說就是不讓使用者看見大黃頁!!!

例:python2.7寫法

try:

pass

except exception,ex:

pass

例:python3.*寫法

try:

pass

except exception as ex:

pass

需求:將使用者輸入的兩個數字相加

while true:

num1 = raw_input('num1:')

num2 = raw_input('num2:')

try:

num1 = int(num1)

num2 = int(num2)

result = num1 + num2

except exception, e:

print '出現異常,資訊如下:'

print e

2、異常種類

python中的異常種類非常多,每個異常專門用於處理某一項異常!!!

常用異常

attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x

ioerror 輸入/輸出異常;基本上是無法開啟檔案

importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤

indentationerror 語法錯誤(的子類) ;**沒有正確對齊

indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]

keyerror 試圖訪問字典裡不存在的鍵

keyboardinterrupt ctrl+c被按下

nameerror 使用乙個還未被賦予物件的變數

syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)

typeerror 傳入物件型別與要求的不符合

unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,

導致你以為正在訪問它

valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的

更多異常
arithmeticerror

assertionerror

attributeerror

baseexception

buffererror

byteswarning

deprecationwarning

environmenterror

eoferror

exception

floatingpointerror

futurewarning

generatorexit

importerror

importwarning

indentationerror

indexerror

ioerror

keyboardinterrupt

keyerror

lookuperror

memoryerror

nameerror

notimplementederror

oserror

overflowerror

pendingdeprecationwarning

referenceerror

runtimeerror

runtimewarning

standarderror

stopiteration

syntaxerror

syntaxwarning

systemerror

systemexit

taberror

typeerror

unboundlocalerror

unicodedecodeerror

unicodeencodeerror

unicodeerror

unicodetranslateerror

unicodewarning

userwarning

valueerror

warning

zerodivisionerror

例項indexerror
dic = ["wupeiqi", 'alex']

try:

dic[10]

except indexerror, e:

print e

例項keyerror
dic = 

try:

dic['k20']

except keyerror, e:

print e

例項:valueerror
s1 = 'hello'

try:

int(s1)

except valueerror, e:

print e

對於上述例項,異常類只能用來處理指定的異常情況,如果非指定異常則無法處理。
# 未捕獲到異常,程式直接報錯

s1 = 'hello'

try:

int(s1)

except indexerror,e:

print e

所以,寫程式時需要考慮到try**塊中可能出現的任意異常,可以這樣寫:

s1 = 'hello'

try:

int(s1)

except indexerror,e:

print e

except keyerror,e:

print e

except valueerror,e:

print e

萬能異常 在python的異常中,有乙個萬能異常:exception,他可以捕獲任意異常,即:

s1 = 'hello'

try:

int(s1)

except exception,e:

print e

接下來你可能要問了,既然有這個萬能異常,其他異常是不是就可以忽略了!

s1 = 'hello'

try:

int(s1)

except keyerror,e:

print '鍵錯誤'

except indexerror,e:

print '索引錯誤'

except exception, e:

print 『錯誤'

3、異常其他結構

try:

# 主**塊

pass

except keyerror,e:

# 異常時,執行該塊

pass

else:

# 主**塊執行完,執行該塊

pass

finally:

# 無論異常與否,最終執行該塊

pass

4、主動觸發異常

try:

raise exception('錯誤了。。。')

except exception,e:

print e

5、自定義異常

class wupeiqiexception(exception):

def __init__(self, msg):

self.message = msg

def __str__(self):

return self.message

try:

raise wupeiqiexception('我的異常')

except wupeiqiexception,e:

print e

6、斷言

# assert 條件

assert 1 == 1

assert 1 == 2

python異常處理 Python 異常處理

使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...

python異常舉例 Python異常處理

1.1異常問題舉例 例一 i input 請輸入數字 請輸入數字 0 print i print 5 int i traceback most recent call last file line 1,in zerodivisionerror division by zero 上述 的報錯是除零的錯...

python異常處理

當你的程式中出現異常情況時就需要異常處理。比如當你開啟乙個不存在的檔案時。當你的程式中有一些無效的語句時,python會提示你有錯誤存在。下面是乙個拼寫錯誤的例子,print寫成了print。python是大小寫敏感的,因此python將引發乙個錯誤 print hello world file l...