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

聊聊python中的異常嵌套

 更新時間:2020年09月01日 08:28:38   作者:JohnYang  
這篇文章主要介紹了python中的異常嵌套的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python 異常的相關(guān)知識,感興趣的朋友可以了解下

在Python中,異常也可以嵌套,當內(nèi)層代碼出現(xiàn)異常時,指定異常類型與實際類型不符時,則向外傳,如果與外面的指定類型符合,則異常被處理,直至最外層,運用默認處理方法進行處理,即停止程序,并拋出異常信息。如下代碼:

try:
 try:
  raise IndexError
 except TypeError:
  print('get handled')
except SyntaxError:
 print('ok')

運行程序:

Traceback (most recent call last):
File "<pyshell#47>", line 3, in <module>
raise IndexError
IndexError


再看另一個被外層try-except捕獲的例子:

try:
 try:
  1/0
 finally:
  print('finally')
except:
 print('ok')

運行:

finally
ok

這里值得注意的是except:可以捕獲所有的異常,但實際上這樣做也有缺點,即有時候會包住預(yù)定的異常。


另外,需要提到的是raise A from B,將一個異常與另一個異常關(guān)聯(lián)起來,如果from后面的B沒有被外層捕獲,那么A,B異常都將拋出,例如:

try:
 1/0
except Exception as E:
 raise TypeError('bad') from E

運行:

Traceback (most recent call last):
File "<pyshell#4>", line 2, in <module>
1/0
ZeroDivisionError: division by zero

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "<pyshell#4>", line 4, in <module>
raise TypeError('bad') from E
TypeError: bad

相反,如果外層捕獲了B:

try:
 try:
  1/0
 except Exception as E:
  raise TypeError from E
except TypeError:
 print('no'

運行:

no


最后,再看看try-finally在嵌套中的表現(xiàn)。

try:
 try:
  1/0
 finally:
  print('finally')
except:
 print('ok')

運行:

finally
ok

不管有沒有異常發(fā)生,或者其是否被處理,finally的代碼都要執(zhí)行,如果異常被處理,則停止,如果沒有被處理,向外走,直至最終沒處理,采用默認方法處理,上例中,異常在最外層被處理。

try:
 try:
  1/0
 except Exception as E:
  print('happens')
 finally:
  print('finally')
except E:
 print('get handled')

運行:

happens
finally

異常在內(nèi)部被處理,不再向外傳播。

以上就是聊聊python中的異常嵌套的詳細內(nèi)容,更多關(guān)于python 異常嵌套的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:

相關(guān)文章

最新評論

西乌| 北宁市| 岳池县| 沭阳县| 定州市| 清苑县| 广饶县| 泸西县| 彝良县| 蓬安县| 漳浦县| 安陆市| 肇州县| 万宁市| 宁城县| 栖霞市| 五华县| 辽阳县| 四平市| 布拖县| 镇远县| 二连浩特市| 巧家县| 加查县| 长沙县| 顺平县| 崇明县| 永兴县| 合山市| 锡林郭勒盟| 徐州市| 北安市| 长汀县| 永济市| 漳浦县| 女性| 林周县| 虞城县| 东方市| 太仓市| 九龙城区|