最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python編程進階之異常處理用法實例分析

 更新時間:2020年02月21日 12:30:28   作者:Nicoder  
這篇文章主要介紹了python編程進階之異常處理用法,結(jié)合實例形式分析了python異常捕獲、處理相關(guān)語句、使用技巧與操作注意事項,需要的朋友可以參考下

本文實例講述了python異常處理用法。分享給大家供大家參考,具體如下:

之前用Java的時候,在容易出錯的地方我們經(jīng)常使用try…catch或者try…catch…finally來捕捉和顯示異常,在python中很高興地發(fā)現(xiàn)它也有這樣的機制。

try..except

這個用于當(dāng)異常出現(xiàn)的時候,用except從句來處理異常,而不至于程序自動退出。例如,在python里獲取用戶輸入時,若用戶輸入文件結(jié)束符Ctrl-d,則會引發(fā)EOFError文件結(jié)束異常。我們使用try except來處理:

#!/usr/bin/python
# Filename: try_except.py
import sys
try:
  s = raw_input('Enter something --> ')
except EOFError:
  print '\nWhy did you do an EOF on me?'
  sys.exit() # exit the program
except:
  print '\nSome error/exception occurred.'
  # here, we are not exiting the program
print 'Done'

我們在運行程序的時候輸入Ctrl-d:

$ python try_except.py
Enter something -->
Why did you do an EOF on me?

$ python try_except.py
Enter something --> Python is exceptional!
Done

可以看到,當(dāng)遇到EOFERROR時,程序執(zhí)行了except EOFError:中的內(nèi)容。若出現(xiàn)其他異常,則會執(zhí)行except:從句中的內(nèi)容。except后面還可以加else從句,如果沒有發(fā)生異常,則執(zhí)行else從句中的內(nèi)容。記住,首先,我們要導(dǎo)入sys模塊!!

try.. catch

catch主要用于異常出現(xiàn)的時候抓取異常,方便顯示異常信息。但是我還沒有見別人用過,找不到例子~所以是不推薦用嘛?誰找到例子可以留言給我^.^

try.. finally

假如你在讀一個文件的時候,希望在無論異常發(fā)生與否的情況下都關(guān)閉文件,該怎么做呢?這可以使用finally塊來完成。注意,在一個try塊下,你可以同時使用except從句和finally塊。如果你要同時使用它們的話,需要把一個嵌入另外一個。舉個例子(還記得文件讀寫里的poem嘛):

#!/usr/bin/python
# Filename: finally.py
import time
try:
  f = file('poem.txt')
  while True: # our usual file-reading idiom
    line = f.readline()
    if len(line) == 0:
      break
    time.sleep(2)
    print line,
finally:
  f.close()
  print 'Cleaning up...closed the file'

輸出:

$ python finally.py
Programming is fun
When the work is done
Cleaning up...closed the file
Traceback (most recent call last):
  File "finally.py", line 12, in ?
    time.sleep(2)
KeyboardInterrupt

我們進行通常的讀文件工作,但是我有意在每打印一行之前用time.sleep方法暫停2秒鐘。這樣做的原因是讓程序運行得慢一些(Python由于其本質(zhì)通常運行得很快)。在程序運行的時候,按Ctrl-c中斷/取消程序。

我們可以觀察到KeyboardInterrupt異常被觸發(fā),程序退出。但是在程序退出之前,finally從句仍然被執(zhí)行,把文件關(guān)閉

用raise引發(fā)異常

我們可以使用raise語句 引發(fā) 異常,但要指明錯誤/異常的名稱和伴隨異常 觸發(fā)的 異常對象。你可以引發(fā)的錯誤或異常應(yīng)該分別是一個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.'

輸出:

$ python raising.py
Enter something -->
Why did you do an EOF on me?

$ python raising.py
Enter something --> ab
ShortInputException: The input was of length 2, was expecting at least 3

$ python raising.py
Enter something --> abc
No exception was raised.

這里,我們創(chuàng)建了我們自己的異常類型,其實我們可以使用任何預(yù)定義的異常/錯誤。自己定義的異常類型是ShortInputException類。它有兩個域——length是給定輸入的長度,atleast則是程序期望的最小長度。

在except從句中,我們提供了錯誤類和用來表示錯誤/異常對象的變量。這與函數(shù)調(diào)用中的形參和實參概念類似。當(dāng)觸發(fā)raise從句時,會調(diào)用對應(yīng)的except從句執(zhí)行,在這個例子中就引發(fā)了except ShortInputException,x 這個錯誤,類似于調(diào)用。

更多Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python入門與進階經(jīng)典教程》、《Python字符串操作技巧匯總》、《Python列表(list)操作技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

最新評論

改则县| 绥滨县| 维西| 调兵山市| 新干县| 台前县| 安丘市| 云龙县| 汉中市| 龙山县| 阿巴嘎旗| 延庆县| 榕江县| 桃源县| 梅河口市| 彰化县| 正宁县| 吴忠市| 浦北县| 饶阳县| 汉源县| 武鸣县| 长岛县| 潞西市| 铅山县| 连城县| 花莲县| 汉源县| 盐亭县| 安泽县| 泰和县| 龙陵县| 长丰县| 吉隆县| 讷河市| 河东区| 沭阳县| 雷波县| 酉阳| 义马市| 河源市|