溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python如何異常處理try except

發(fā)布時(shí)間:2021-08-03 11:14:35 來源:億速云 閱讀:128 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下python如何異常處理try except,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

某些時(shí)候我們能夠預(yù)判程序可能會(huì)出現(xiàn)何種類型的錯(cuò)誤,而此時(shí)我們希望程序繼續(xù)執(zhí)行而不是退出,此時(shí)就需要用到異常處理;下面是常用的幾種異常處理方法

#通過實(shí)例屬性 列表 字典構(gòu)造對(duì)應(yīng)的異常
class Human(object):
  def __init__(self, name, age, sex):
    self.name = name
    self.age = age
  def get_info(self):
    print("my name is %s,age is %s"%(self.name, self.age))
man1 = Human("李四", 22, "man")
list1 = [1, 2, 3]
dict1 = {"name":"張三", "age":12}

#異常捕獲的語法
try:
  man1.get_info1()
except AttributeError as e: #AttributeError為錯(cuò)誤類型,此種錯(cuò)誤的類型賦值給變量e;當(dāng)try與except之間的語句觸發(fā)
# AttributeError錯(cuò)誤時(shí)程序不會(huì)異常退出而是執(zhí)行except AttributeError下面的內(nèi)容
  print("this is a AttributeError:",e)
finally:
  print("this is finally")

try:
  man1.get_info()
  #list1[3]
  #dict1["sex"]
except AttributeError as e:
  print("this is a AttributeError:",e)
else:
  print("一切正常") #當(dāng)try與except之間內(nèi)容沒有觸發(fā)捕獲異常也沒有異常退出就會(huì)跳過except轉(zhuǎn)到執(zhí)行else下面的語句
finally:
  print("this is finally")#不論程序是否觸發(fā)異常,只要沒有退出都會(huì)執(zhí)行finally下面的內(nèi)容

try:
  list1[3]
  dict1["sex"]
except (IndexError, KeyError) as e: #當(dāng)需要捕獲多個(gè)異常在一條except時(shí)候可以使用這種語法,try與except之間語句觸發(fā)任意一個(gè)異常捕獲后就跳到except下面的語句繼續(xù)執(zhí)行
  print("this is a IndexError or KeyError:",e)

try:
  list1[3]
  dict1["sex"]
except IndexError as e:#當(dāng)需要分開捕獲多個(gè)異常可以使用多條except語句,try與except之間語句觸發(fā)任意一個(gè)異常捕獲后就跳到對(duì)應(yīng)except執(zhí)行其下面的語句,其余except不在繼續(xù)執(zhí)行
  print("this is a IndexError:",e)
except KeyError as e:
  print("this is a KeyError:",e)

try:
  man1.get_info1()
except IndexError as e:
  print("this is a IndexError:",e)
except Exception as e:
  print("this is a OtherError:",e)#可以使用except Exception來捕獲絕大部分異常而不必將錯(cuò)誤類型顯式全部寫出來

#自己定義異常
class Test_Exception(Exception):
  def __init__(self, message):
    self.message = message
try:
  man1.get_info()
  raise Test_Exception("自定義錯(cuò)誤")#自己定義的錯(cuò)誤需要在try與except之間手工觸發(fā),錯(cuò)誤內(nèi)容為實(shí)例化傳入的參數(shù)
except Test_Exception as e:
  print(e)

以上是“python如何異常處理try except”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI