日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

简明python教程 --C++程序员的视角(七):异常

發(fā)布時間:2025/3/21 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简明python教程 --C++程序员的视角(七):异常 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

當你的程序中出現(xiàn)某些?異常的?狀況的時候,異常就發(fā)生了。例如,當你想要讀某個文件的時候,而那個文件不存在。或者在程序運行的時候,你不小心把它刪除了。上述這些情況可以使用異常來處理。

假如你的程序中有一些無效的語句,Python會引發(fā)并告訴你那里有一個錯誤,從而處理這樣的情況。考慮一個簡單的print語句。假如我們把print誤拼為Print,注意大寫,這樣Python會?引發(fā)一個語法錯誤。

我們可以觀察到有一個SyntaxError被引發(fā),并且檢測到的錯誤位置也被打印了出來。這是這個錯誤的?錯誤處理器?所做的工作。

?ValueError 數(shù)據(jù)不符合期望的格式(split()函數(shù)在s?t?ri?n?g中沒有找到分隔符)

?try:

  role, words = line.split(':',1)

?except?ValueError:

  pass

?

?IOEError 數(shù)據(jù)無法正常訪問(如文件被移走或重命名)

?try:

  fdata = open("test.txt",'w')

  fmiss = open("est.txt",'w')

  pirnt fmiss.readline()

?except IOEError as err:

  print "File error:" + str(err)

?finally:

  if 'fdata' in locals():

    fdata.close()

  if 'fmiss' in locals():

    fmiss.close()

?

用with處理文件,就不用操心文件的關閉

?try:

  with open('test.txt','w') as fdata, open('est.txt','w') as fmiss:

    print >>fdata,"Hello"

?except IOEError as err:

  print 'file error:' + str(err)

?

?

try..except


我們嘗試讀取用戶的一段輸入。按Ctrl-d,看一下會發(fā)生什么。

>>> s = raw_input('Enter something --> ')
Enter something --> Traceback (most recent call last):
? File "<stdin>", line 1, in ?
EOFError

Python引發(fā)了一個稱為EOFError的錯誤,這個錯誤基本上意味著它發(fā)現(xiàn)一個不期望的?文件尾?(由Ctrl-d表示)

接下來,我們將學習如何處理這樣的錯誤。

?

處理異常


我們可以使用try..except語句來處理異常。

我們把所有可能引發(fā)錯誤的語句放在try塊中,然后在except從句/塊中處理所有的錯誤和異常。except從句可以專門處理單一的錯誤或異常,或者一組包括在圓括號內(nèi)的錯誤/異常。如果沒有給出錯誤或異常的名稱,它會處理?所有的?錯誤和異常。對于每個try從句,至少都有一個相關聯(lián)的except從句。

如果某個錯誤或異常沒有被處理,默認的Python處理器就會被調(diào)用。它會終止程序的運行,并且打印一個消息,我們已經(jīng)看到了這樣的處理。

?

你還可以讓try..except塊關聯(lián)上一個else從句。當沒有異常發(fā)生的時候,else從句將被執(zhí)行。

我們還可以得到異常對象,從而獲取更多有個這個異常的信息。這會在下一個例子中說明。

?

引發(fā)異常


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

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

在except從句中,我們提供了錯誤類和用來表示錯誤/異常對象的變量。這與函數(shù)調(diào)用中的形參和實參概念類似。在這個特別的except從句中,我們使用異常對象的length和atleast域來為用戶打印一個恰當?shù)南ⅰ?/p>

?

try..finally


假如你在讀一個文件的時候,希望在無論異常發(fā)生與否的情況下都關閉文件,該怎么做呢?這可以使用finally塊來完成。

注意,在一個try塊下,你可以同時使用except從句和finally塊。如果你要同時使用它們的話,需要把一個嵌入另外一個。

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

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

from:?http://www.cnblogs.com/wei-li/archive/2012/03/26/2417314.html

總結

以上是生活随笔為你收集整理的简明python教程 --C++程序员的视角(七):异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。