欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

詳解在Python中處理異常的教程

系統(tǒng) 2005 0

什么是異常?

異常是一個事件,其中一個程序,破壞程序的指令的正常流的執(zhí)行過程中而發(fā)生的。一般情況下,當(dāng)一個Python腳本遇到一些情況不能處理,就拋出一個異常。異常是一個Python對象,它表示一個錯誤。

當(dāng)Python腳本拋出一個異常,它必須處理異常,否則將立即終止。
處理異常:

如果有可能會引發(fā)異常的一些可疑的代碼,就可以通過將可疑的代碼在一個try塊:保衛(wèi)你的程序。在try塊,包括以下情況except:語句,其次是代碼,作為優(yōu)雅的處理問題,盡可能塊。
語法

這里是try....except...else 塊的簡單語法:

            
try:
  You do your operations here;
  ......................
except ExceptionI:
  If there is ExceptionI, then execute this block.
except ExceptionII:
  If there is ExceptionII, then execute this block.
  ......................
else:
  If there is no exception then execute this block. 


          

這里有一些關(guān)于上述語法要點:

  • ??? 單個try語句可以有多個不同的語句。當(dāng)try塊中包含可能會引發(fā)不同類型的異常語句,這是很有用的。
  • ??? 也可以提供一個通用的except子句,它用來處理任何異常。
  • ??? except子句后,可以包括其他子句。塊沒有引發(fā)異常:在別的塊中的代碼,如果在try中的代碼執(zhí)行。
  • ??? 在else塊是不需要try:塊的代碼的保護。

例子

這里是簡單的例子,這將打開一個文件并寫入內(nèi)容的文件中并移出正常:

            
#!/usr/bin/python

try:
  fh = open("testfile", "w")
  fh.write("This is my test file for exception handling!!")
except IOError:
  print "Error: can\'t find file or read data"
else:
  print "Written content in the file successfully"
  fh.close()


          

這將產(chǎn)生以下結(jié)果:

            
Written content in the file successfully


          

示例:

這里有一個更簡單的例子,它試圖打開沒有權(quán)限并在文件中寫入內(nèi)容,所以它會引發(fā)一個異常:

            
#!/usr/bin/python

try:
  fh = open("testfile", "r")
  fh.write("This is my test file for exception handling!!")
except IOError:
  print "Error: can\'t find file or read data"
else:
  print "Written content in the file successfully"


          

這將產(chǎn)生以下結(jié)果:

            
Error: can't find file or read data


          

在except子句無異常:

還可以使用不同的定義如下無異常的聲明:

            
try:
  You do your operations here;
  ......................
except:
  If there is any exception, then execute this block.
  ......................
else:
  If there is no exception then execute this block. 


          

try-except 語句捕獲所有出現(xiàn)的異常。使用這種try-except 聲明不被認為是一個良好的編程習(xí)慣,但因為它捕獲所有異常,但不會使程序員找出可能出現(xiàn)的問題的根本原因。
在except子句的多個異常:

也可以使用相同的除語句來處理多個異常,如下所示:

            
try:
  You do your operations here;
  ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
  If there is any exception from the given exception list, 
  then execute this block.
  ......................
else:
  If there is no exception then execute this block. 


          

try-finally 語句:

可以使用finally:塊連同try:塊。在try塊是否引發(fā)異?;驔]有任何代碼 finally塊是一個必須執(zhí)行的塊。try-finally語句的語法是這樣的:

            
try:
  You do your operations here;
  ......................
  Due to any exception, this may be skipped.
finally:
  This would always be executed.
  ......................


          

請注意,可以提供except子句或finally子句,但不能同時使用。不能同時使用else子句與finally子句。
例子:

            
#!/usr/bin/python

try:
  fh = open("testfile", "w")
  fh.write("This is my test file for exception handling!!")
finally:
  print "Error: can\'t find file or read data"


          

如果沒有權(quán)限,以寫入方式打開文件,那么這將產(chǎn)生以下結(jié)果:

            
Error: can't find file or read data


          

同樣的例子可以寫入更簡潔,如下所示:

            
#!/usr/bin/python

try:
  fh = open("testfile", "w")
  try:
   fh.write("This is my test file for exception handling!!")
  finally:
   print "Going to close the file"
   fh.close()
except IOError:
  print "Error: can\'t find file or read data"


          

當(dāng)一個異常被拋出在try塊中,執(zhí)行立即傳遞到finally塊。finally塊中的所有語句都執(zhí)行,該異常被再次拋出,并在被處理 except 語句如果出現(xiàn)在一個更高的層在try-except語句。
Exception參數(shù):

異??梢杂幸粋€參數(shù),參數(shù)是一個值,它給出了關(guān)于這個問題的其他信息。參數(shù)按異常內(nèi)容改變??梢酝ㄟ^不同的子句提供一個變量,如下所示捕獲異常的參數(shù):

            
try:
  You do your operations here;
  ......................
except ExceptionType, Argument:
  You can print value of Argument here...


          

如果正在編寫代碼來處理一個異常,可以有一個變量按照異常的名稱在不同的聲明。如果捕捉多個異常,可以有一個變量按照異常的元組。

這個變量將接收主要包含異常原因的異常值。該變量可以在一個元組的形式接收一個或多個值。該元組通常包含錯誤串,錯誤碼和一個錯誤的位置。
示例:

下面是一個異常的例子:

            
#!/usr/bin/python

# Define a function here.
def temp_convert(var):
  try:
   return int(var)
  except ValueError, Argument:
   print "The argument does not contain numbers\n", Argument

# Call above function here.
temp_convert("xyz");


          

這將產(chǎn)生以下結(jié)果:

            
The argument does not contain numbers
invalid literal for int() with base 10: 'xyz'


          

拋出異常:

可以通過使用raise語句拋出幾個方面的異常。一般raise語句的語法。
語法

            
raise [Exception [, args [, traceback]]]


          

這里,Exception是異常的類型(例如,NameError)和參數(shù)是用于異常的參數(shù)值。該參數(shù)是可選的;如果未提供,則異常的參數(shù)是None。

最后一個參數(shù)traceback,也是可選的(并且在實踐中很少使用),并且如果存在的話,那么用于異?;厮輰ο?。
例子:

異常可以是一個字符串,一個類或一個對象。大多數(shù)Python核心拋出是類,有參數(shù)認為是類的實例的異常。定義新的異常是很容易的,可以參考如下:

            
def functionName( level ):
  if level < 1:
   raise "Invalid level!", level
   # The code below to this would not be executed
   # if we raise the exception


          

注:為了捕獲一個異常,“except”語句必須引用拋出類對象或簡單的字符串相同的異常。例如,捕捉到上面的異常,必須寫except子句,如下所示:

            
try:
  Business Logic here...
except "Invalid level!":
  Exception handling here...
else:
  Rest of the code here...


          

用戶定義的異常:

Python中,還可以通過內(nèi)置的異常標準的派生類來創(chuàng)建自己的異常。

下面是有關(guān)RuntimeError一個例子。這里是從RuntimeError子類的類被創(chuàng)建。當(dāng)需要顯示更多的具體信息時,一個異常被捕獲,這是很有用的。

在try塊中,用戶定義的異常引發(fā),并夾在except塊。變量e被用來創(chuàng)建類Networkerror的一個實例。

            
class Networkerror(RuntimeError):
  def __init__(self, arg):
   self.args = arg


          

所以一旦在上面定義的類,可以按如下方法拋出異常:

            
try:
  raise Networkerror("Bad hostname")
except Networkerror,e:
  print e.args


          


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 午夜日韩精品 | 在线观看亚洲一区二区三区 | 奇米影视第四色av首页 | 成人欧美一区二区三区在线播放 | 日韩欧美在线观看 | 亚洲第一区第二区 | 亚洲成人第一页 | 日韩高清中文字幕 | 国产精品一区久久久久 | 亚洲国产精品久久久久秋霞蜜臀 | 亚洲蜜桃AV色情精品成人 | 麻豆短视频app网站 天天澡天天碰天天狠伊人五月 | 偷偷狠狠的日日高清完整视频 | 欧美18xxxx | 国产日韩欧美不卡 | 无码日本亚洲一区久久精品 | 学院传说之三生三世桃花缘 | 黄网站免费在线观看 | 亚洲国产精品久久久久网站 | 最全精品自拍视频在线 | 国产精品综合色区在线观看 | 欧美一级高潮片免费的 | 91精选视频 | 午夜久久视频 | 在线一级片 | 欧美另类视频一区二区三区 | 久久久国产一区二区三区 | 国产中文视频 | 欧美另类专区 | 激情丁香婷婷 | 日韩免费一区 | 草久视频 | 国产亚洲精品久久久久久无码网站 | 欧美成人精品激情在线观看 | 91在线视频播放 | 亚洲国产成人精品女人 | 亚洲成年网站在线777 | 亚洲综合精品香蕉久久网97 | 国产综合在线视频 | 色噜噜狠狠狠狠色综合久不 | 九九99国产精品视频 |