Python之異常處理

2022-06-25 08:18:12 字數 2180 閱讀 3170

當乙個程式執行時報錯,可以通過python異常處理機制忽略錯誤或者以友好的方式提示錯誤

vim day8-2.py

#!/usr/bin/python

# -*- coding:utf-8 -*-

try:

input = raw_input()

data = int(input)

print data

except exception,e:

print '請輸入數字'

錯誤有很多種可以定義對於某一種異常進行處理

#!/usr/bin/python

# -*- coding:utf-8 -*-

try:

dic =

dic['ddd']

except indexerror,e: #如果出現indexerror錯誤執行下面的

print 'errot',e

except keyerror,e: #如果出現keyerror錯誤執行下面的

print e

except typeerror,e: #如果出現keyerror錯誤執行下面的

print e

#如果以上錯誤均為出現則報錯

ps:可以在最後加 except exception,e:處理所有無法**到的錯誤

以上的捕獲異常**異常,還有一種異常是主動觸發異常,如果是自己想讓**出現異常

建立乙個模組helper.py提供了很多公共的元件

#!/usr/bin/python

# -*- coding:utf-8 -*-

def f1():

return false

def f2():

pass

def f3():

pass

vim day8-4.py

#!/usr/bin/python

# -*- coding:utf-8 -*-

import helper

if __name__ == '__main__':

try:

n = "1"

n = int(n)

ret = helper.f1()

if ret:

print 'chenggong'

else:

# print 'shibai'

raise exception('error')

except exception,e:

print "出現錯誤"

print e

#記錄日誌,e

在裡面呼叫另外的模組如果另外的模組執行錯誤則主動觸發乙個異常(這裡通過f1返回false強行觸發錯誤)並且封裝到e裡面,然後列印出來

自定義異常

vim day8-5.py

class alexerror(exception):

def __str__(self):

return 'alex error'

try:

raise alexerror()

except exception,e:

print e

以上自定義異常輸出一直不變修改**動態更新異常

#!/usr/bin/python

# -*- coding:utf-8 -*-

class alexerror(exception): #定義類繼承exception

def __init__(self,msg=none):

self.message = msg

def __str__(self):

if self.message:

return self.message

else:

return 'alex error'

try:

raise alexerror('dasdkj')

except exception,e:

print e

異常及為傳遞的字串

不傳遞引數返回錯誤為alex error

異常處理之斷言

滿足條件則執行

assert 1==1

assert 1==2

python之異常處理 Python之異常處理

異常物件 請大家執行如下 a 100 0 print a 就會發現直譯器顯示如下的錯誤提示 traceback most recent call last file x.py line 1,in a 100 0 zerodivisionerror division by zero 大家要學會看直譯器...

Python之異常處理

在程式執行過程中影響程式正常執行的內容,稱為異常 nameerror print a indexerror 索引錯誤 li 1,2,3,4 print li 8 keyerror d dict a 1,b 2 print d f zerodivisionerror 除0錯誤 print 10 2 2...

Python之異常處理

try ret int input num 正常執行的 print ret except valueerror 捕捉錯誤 print 請輸入數字 try ret int input num 正常執行的 print ret except valueerror 捕捉錯誤 print 請輸入數字 exce...