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

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

 更新時(shí)間:2015年05月24日 12:04:10   投稿:goldensun  
這篇文章主要介紹了詳解在Python中處理異常的教程,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下

什么是異常?

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

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

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

這里是try....except...else 塊的簡(jiǎn)單語法:

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)于上述語法要點(diǎn):

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

例子

這里是簡(jiǎn)單的例子,這將打開一個(gè)文件并寫入內(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

示例:

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

#!/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 聲明不被認(rèn)為是一個(gè)良好的編程習(xí)慣,但因?yàn)樗东@所有異常,但不會(huì)使程序員找出可能出現(xiàn)的問題的根本原因。
在except子句的多個(gè)異常:

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

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塊是一個(gè)必須執(zhí)行的塊。try-finally語句的語法是這樣的:

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

請(qǐng)注意,可以提供except子句或finally子句,但不能同時(shí)使用。不能同時(shí)使用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

同樣的例子可以寫入更簡(jiǎn)潔,如下所示:

#!/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)一個(gè)異常被拋出在try塊中,執(zhí)行立即傳遞到finally塊。finally塊中的所有語句都執(zhí)行,該異常被再次拋出,并在被處理 except 語句如果出現(xiàn)在一個(gè)更高的層在try-except語句。
Exception參數(shù):

異常可以有一個(gè)參數(shù),參數(shù)是一個(gè)值,它給出了關(guān)于這個(gè)問題的其他信息。參數(shù)按異常內(nèi)容改變。可以通過不同的子句提供一個(gè)變量,如下所示捕獲異常的參數(shù):

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

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

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

下面是一個(gè)異常的例子:

#!/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語句拋出幾個(gè)方面的異常。一般raise語句的語法。
語法

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

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

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

異??梢允且粋€(gè)字符串,一個(gè)類或一個(gè)對(duì)象。大多數(shù)Python核心拋出是類,有參數(shù)認(rèn)為是類的實(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

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

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

用戶定義的異常:

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

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

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

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

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

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

相關(guān)文章

  • 在Tensorflow中實(shí)現(xiàn)leakyRelu操作詳解(高效)

    在Tensorflow中實(shí)現(xiàn)leakyRelu操作詳解(高效)

    這篇文章主要介紹了在Tensorflow中實(shí)現(xiàn)leakyRelu操作詳解(高效),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python構(gòu)建圖像分類識(shí)別器的方法

    Python構(gòu)建圖像分類識(shí)別器的方法

    今天小編就為大家分享一篇Python構(gòu)建圖像分類識(shí)別器的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python獲取指定時(shí)間差的時(shí)間實(shí)例詳解

    python獲取指定時(shí)間差的時(shí)間實(shí)例詳解

    這篇文章主要介紹了python獲取指定時(shí)間差的時(shí)間實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Pytorch中index_select() 函數(shù)的實(shí)現(xiàn)理解

    Pytorch中index_select() 函數(shù)的實(shí)現(xiàn)理解

    這篇文章主要介紹了Pytorch中index_select() 函數(shù)的實(shí)現(xiàn)理解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Python?Pandas學(xué)習(xí)之series的二元運(yùn)算詳解

    Python?Pandas學(xué)習(xí)之series的二元運(yùn)算詳解

    二元運(yùn)算是指由兩個(gè)元素形成第三個(gè)元素的一種規(guī)則,例如數(shù)的加法及乘法;更一般地,由兩個(gè)集合形成第三個(gè)集合的產(chǎn)生方法或構(gòu)成規(guī)則稱為二次運(yùn)算。本文將詳細(xì)講講Pandas中series的二元運(yùn)算,感興趣的可以了解一下
    2022-09-09
  • Django基礎(chǔ)知識(shí) URL路由系統(tǒng)詳解

    Django基礎(chǔ)知識(shí) URL路由系統(tǒng)詳解

    這篇文章主要介紹了Django基礎(chǔ)知識(shí) URL路由系統(tǒng)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python基于Tkinter實(shí)現(xiàn)的垃圾分類答題軟件代碼

    Python基于Tkinter實(shí)現(xiàn)的垃圾分類答題軟件代碼

    這篇文章主要介紹了基于Tkinter實(shí)現(xiàn)的垃圾分類答題軟件代碼,圖形用戶界面是一種人與計(jì)算機(jī)通信的界面顯示格式,允許用戶使用鼠標(biāo)等輸入設(shè)備操縱屏幕上的圖標(biāo)或菜單選項(xiàng),需要的朋友可以參考下
    2023-04-04
  • 基于python實(shí)現(xiàn)微信收紅包自動(dòng)化測(cè)試腳本(測(cè)試用例)

    基于python實(shí)現(xiàn)微信收紅包自動(dòng)化測(cè)試腳本(測(cè)試用例)

    這篇文章主要介紹了基于python實(shí)現(xiàn)微信收紅包自動(dòng)化測(cè)試腳本,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07
  • Python MySQL如何通過Binlog獲取變更記錄恢復(fù)數(shù)據(jù)

    Python MySQL如何通過Binlog獲取變更記錄恢復(fù)數(shù)據(jù)

    本文介紹了如何使用Python和pymysqlreplication庫通過MySQL的二進(jìn)制日志(Binlog)獲取數(shù)據(jù)庫的變更記錄,并展示了一個(gè)簡(jiǎn)單的Python腳本,該腳本讀取Binlog事件并打印出插入、更新和刪除操作的SQL語句,此外,還提到可以使用pandas將結(jié)果輸出到Excel表格中進(jìn)行數(shù)據(jù)分析處理
    2025-01-01
  • python中numpy數(shù)組與list相互轉(zhuǎn)換實(shí)例方法

    python中numpy數(shù)組與list相互轉(zhuǎn)換實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中numpy數(shù)組與list相互轉(zhuǎn)換實(shí)例方法,對(duì)此有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01

最新評(píng)論

海原县| 阿合奇县| 香格里拉县| 孟连| 连江县| 固原市| 石狮市| 泰顺县| 盘山县| 河南省| 抚顺县| 博客| 自治县| 城口县| 尼玛县| 新干县| 灵璧县| 荃湾区| 卫辉市| 阿拉尔市| 綦江县| 石屏县| 巴彦淖尔市| 凤山县| 淮滨县| 碌曲县| 巴林右旗| 丰原市| 塔河县| 新田县| 当雄县| 玉溪市| 伽师县| 同江市| 泰宁县| 辽阳县| 于田县| 新津县| 名山县| 延长县| 都昌县|