日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的异常处理

發布時間:2023/12/13 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的异常处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python的try語句有兩種風格
一:種是處理異常(try/except/else)
二:種是無論是否發生異常都將執行最后的代碼(try/finally)

try/except/else風格
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句> #如果引發了'name'異常,獲得附加的數據
else:
<語句> #如果沒有異常發生
try的工作原理是,當開始一個try語句后,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try子句先執行,接下來會發生什么依賴于執行時是否出現異常。
1、如果當try后的語句執行時發生異常,python就跳回到try并執行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發新的異常)。
2、如果在try后的語句里發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結束程序,并打印缺省的出錯信息)。
3、如果在try子句執行時沒有發生異常,python將執行else語句后的語句(如果有else的話),然后控制流通過整個try語句。

與Python異常相關的關鍵字: 關鍵字 關鍵字說明 raise 拋出/引發異常 try/except 捕獲異常并處理 pass 忽略異常 as 定義異常實例(except IOError as e) finally 無論是否出現異常,都執行的代碼 else 如果try中的語句沒有引發異常,則執行else中的語句 except 老版本的Python,except語句寫作"except Exception, e",Python 2.6后應寫作"except Exception as e"。 使用 except 而不帶任何異常類型: try:

do something

except:

handle except

會捕獲所有異常,包括鍵盤中斷和程序退出請求(用sys.exit()就無法退出程序了,因為異常被捕獲了),因此慎用。使用 except Exception as e 可以捕獲除與程序退出sys.exit()相關之外的所有異常

?


try/finally風格
try:
<語句>
finally:
<語句> #退出try時總會執行

python總會執行finally子句,無論try子句執行時是否發一異常。
1、如果沒有發生異常,python運行try子句,然后是finally子句,然后繼續。
2、如果在try子句發生了異常,python就會回來執行finally子句,然后把異常遞交給上層try,控制流不會通過整個try語句。
當你想無論是否發生異常都確保執行某些代碼時,try/finally是有用的。

這個在打開文件的時候有用 finally總是在最后close()文件

try語句子句形式表
except: 捕獲所有異常
except name: 只捕獲特定的異常
except name,value: 捕獲異常和它的附加數據(將異常的信息保存到value,)
except (name1,name2): 捕獲任何列出的異常
else: 如果沒有異常
finally: 總是執行

>>> try:
f = open('file.txt')
except IOError, e:
print e
else:
print 'wrong'

[Errno 2] No such file or directory: 'file.txt'
最新的python版本 支持try/except/finally
try: 1:如果x沒有異常,執行z,i
x 2:如果x有異常, 一:如果except捕捉到異常則執行y,i
except(name): 二:沒捕捉到,執行i,然后返回內置異常處理
y
else:
z
finally:
i

但是,不知道"語句1至語句N"在執行會出什么樣的異常,還要做異常處理,且想把出現的異常打印出來,并不停止程序的運行,所以在"except ......"這句應怎樣來寫呢? 總結了一下至少3個方法: 方法一:捕獲所有異常 try: a=b b=c except Exception,e: print Exception,":",e try: a=b b=c except Exception,e: print Exception,":",e www.2cto.com 方法二:采用traceback模塊查看異常 import traceback try: a=b b=c except: traceback.print_exc() import traceback try: a=b b=c except: traceback.print_exc() 方法三:采用sys模塊回溯最后的異常 import sys try: a=b b=c except: info=sys.exc_info() print info[0],":",info[1] import sys try: a=b b=c except: info=sys.exc_info() print info[0],":",info[1] 但是,如果你還想把這些異常保存到一個日志文件中,來分析這些異常,那么請看下面的方法: 把 traceback.print_exc() 打印在屏幕上的信息保存到一個文本文件中 try: a=b b=c except: f=open("c:log.txt",'a') traceback.print_exc(file=f) f.flush() f.close()

?

引發異常

你可以使用raise語句 引發 異常。你還得指明錯誤/異常的名稱和伴隨異常 觸發的 異常對象。你可以引發的錯誤或異常應該分別是一個Error或Exception類的直接或間接導出類:

#!/usr/bin/python
# Filename: raising.py

class ShortInputException(Exception):
???'''A user-defined exception class.'''
?? def __init__(self, length, atleast):
?? Exception.__init__(self)
?? self.length = length
?? self.atleast = atleast

try:
?? s = raw_input('Enter something --> ')
?? if len(s) < 3:
?? raise ShortInputException(len(s), 3)
?? # Other work can continue as usual here
except EOFError:
?? print '\nWhy did you do an EOF on me?'
except ShortInputException, x:
?? print 'ShortInputException: The input was of length %d, \
?? was expecting at least %d' % (x.length, x.atleast)
else:
?? print 'No exception was raised.'


如何工作:我們創建了異常類型(可以使用任何預定義的異常/錯誤),這個新的異常類型是ShortInputException類。它有兩個域——length是給定輸入的長度,atleast則是程序期望的最小長度。

在except從句中,我們提供了錯誤類和用來表示錯誤/異常對象的變量。這與函數調用中的形參和實參概念類似。在這個特別的except從句中,我們使用異常對象的length和atleast域來為用戶打印一個恰當的消息。

?

轉載于:https://www.cnblogs.com/cl1024cl/p/6205627.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python的异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。