欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

這個用于當異常出現(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

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

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)用中的形參和實參概念類似。當觸發(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)文章

  • python中實現(xiàn)詞云圖的示例

    python中實現(xiàn)詞云圖的示例

    這篇文章主要介紹了python中實現(xiàn)詞云圖的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python數(shù)據(jù)處理——對pandas進行數(shù)據(jù)變頻或插值實例

    python數(shù)據(jù)處理——對pandas進行數(shù)據(jù)變頻或插值實例

    這篇文章主要介紹了python數(shù)據(jù)處理——對pandas進行數(shù)據(jù)變頻或插值實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python 異常的捕獲、異常的傳遞與主動拋出異常操作示例

    Python 異常的捕獲、異常的傳遞與主動拋出異常操作示例

    這篇文章主要介紹了Python 異常的捕獲、異常的傳遞與主動拋出異常操作,結(jié)合實例形式詳細分析了Python針對異常捕獲、傳遞、處理等常見操作技巧,需要的朋友可以參考下
    2019-09-09
  • Python+Pytorch實戰(zhàn)之彩色圖片識別

    Python+Pytorch實戰(zhàn)之彩色圖片識別

    這篇文章主要為大家詳細介紹了如何利用Python+Pytorch實現(xiàn)彩色圖片識別功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-09-09
  • PyQt 線程類 QThread使用詳解

    PyQt 線程類 QThread使用詳解

    QThread是我們將要詳細介紹的第一個類。它也是 Qt 線程類中最核心的底層類。由于 PyQt 的跨平臺特性,QThread要隱藏掉所有平臺相關(guān)的代碼。
    2017-07-07
  • 利用Python制作簡易的點贊器

    利用Python制作簡易的點贊器

    在今天,任何一個社區(qū)類平臺,都具備點贊功能,應(yīng)運而生的就是自動點贊器,俗稱刷分機/刷贊器。本文將用Python編寫一個點贊機器人,需要的可以參考一下
    2022-06-06
  • Python通過paramiko庫實現(xiàn)遠程執(zhí)行l(wèi)inux命令的方法

    Python通過paramiko庫實現(xiàn)遠程執(zhí)行l(wèi)inux命令的方法

    這篇文章主要介紹了Python通過paramiko庫實現(xiàn)遠程執(zhí)行l(wèi)inux命令,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Python使用pandasai實現(xiàn)數(shù)據(jù)分析

    Python使用pandasai實現(xiàn)數(shù)據(jù)分析

    本文主要介紹了Python使用pandasai實現(xiàn)數(shù)據(jù)分析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 使用pandas把某一列的字符值轉(zhuǎn)換為數(shù)字的實例

    使用pandas把某一列的字符值轉(zhuǎn)換為數(shù)字的實例

    今天小編就為大家分享一篇使用pandas把某一列的字符值轉(zhuǎn)換為數(shù)字的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • GoReplay中間件python版本使用教程

    GoReplay中間件python版本使用教程

    GoReplay 是一個用于網(wǎng)絡(luò)流量錄制和回放的工具,它可以用于測試和優(yōu)化分布式系統(tǒng),這篇文章主要介紹了GoReplay中間件python版本使用教程,需要的朋友可以參考下
    2024-02-02

最新評論