python嵌套try...except如何使用詳解
引言
眾所周知,在python中我們用try…except…來捕獲異常,使用raise來拋出異常,但是多重的try…except…是如何使用的呢
前提
拋出異常
當(dāng)調(diào)用raise進(jìn)行拋出錯(cuò)誤的時(shí)候,拋出錯(cuò)誤的后面的代碼不執(zhí)行
def func():
print("hello")
raise Exception("出現(xiàn)了錯(cuò)誤")
print("world")
func()
打印的錯(cuò)誤堆棧
如果抓取錯(cuò)誤,就相當(dāng)于if...else,并不會打斷代碼的執(zhí)行
def func():
try:
print("hello")
raise Exception("出現(xiàn)了錯(cuò)誤")
except Exception as why:
print(why)
print("world")
func()
自定義異常
自定義異常需要我們繼承異常的類,包括一些框架中的異常的類,我們自定義異常的話都需要繼承他們
class MyError(Exception):
pass
def say_hello(str):
if str != "hello":
raise MyError("傳入的字符串不是hello")
print("hello")
say_hello("world")
異常對象
- Exception 是多有異常的父類,他會捕獲所有的異常
- 其后面會跟一個(gè)as as后面的變量就是異常對象,異常對象是異常類實(shí)例化后得到的
多重try
如果是嵌套的try...except...的話,這一層raise的錯(cuò)誤,會被上一層的try...except...進(jìn)行捕獲
補(bǔ)充:捕獲異常的小方法
方法一:捕獲所有異常
a=10
b=0
try:
print (a/b)
except Exception as e:
print(Exception,":",e)
finally:
print ("always excute")
運(yùn)行:
<class 'Exception'> : division by zero
always excute
方法二:采用traceback模塊查看異常
import traceback
try:
print ('here1:',5/2)
print ('here2:',10/5)
print ('here3:',10/0)
except Exception as e:
traceback.print_exc()
運(yùn)行:
here1: 2.5
here2: 2.0
Traceback (most recent call last):
File "/Users/lilong/Desktop/online_release/try_except_use.py", line 59, in <module>
print ('here3:',10/0)
ZeroDivisionError: division by zero
方法三:采用sys模塊回溯最后的異常
import sys
try:
print ('here1:',5/2)
print ('here2:',10/5)
print ('here3:',10/0)
except Exception as e:
info=sys.exc_info()
print (info[0],":",info[1])
運(yùn)行:
here1: 2.5
here2: 2.0
<class 'ZeroDivisionError'> : division by zero
注意:萬能異常Exception
被檢測的代碼塊拋出的異常有多種可能性,并且我們針對所有的異常類型都只用一種處理邏輯就可以了,那就使用Exception,除非要對每一特殊異常進(jìn)行特殊處理。
總結(jié)
到此這篇關(guān)于python嵌套try...except如何使用的文章就介紹到這了,更多相關(guān)python嵌套try...except使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python try except 捕獲所有異常的實(shí)例
- Python使用try except處理程序異常的三種常用方法分析
- Python異常處理:try、except、else、finally的全面解析
- 對python中的try、except、finally 執(zhí)行順序詳解
- Python中的異常處理try/except/finally/raise用法分析
- python try except返回異常的信息字符串代碼實(shí)例
- Python try except else使用詳解
- python中try Except拋出異常的使用方式
- Python中 try / except / else / finally 異常處理方法詳解
相關(guān)文章
pandas基于時(shí)間序列的固定時(shí)間間隔求均值的方法
今天小編就為大家分享一篇pandas基于時(shí)間序列的固定時(shí)間間隔求均值的方法,具有好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python如何優(yōu)雅刪除字符列表空字符及None元素
這篇文章主要介紹了Python如何優(yōu)雅刪除字符列表空字符及None元素,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
python3實(shí)現(xiàn)小球轉(zhuǎn)動(dòng)抽獎(jiǎng)小游戲
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)小球轉(zhuǎn)動(dòng)抽獎(jiǎng)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
Python實(shí)現(xiàn)全角半角轉(zhuǎn)換的方法
這篇文章主要介紹了Python實(shí)現(xiàn)全角半角轉(zhuǎn)換的方法,很實(shí)用的方法,需要的朋友可以參考下2014-08-08
Python機(jī)器學(xué)習(xí)之使用Pyecharts制作可視化大屏
pyecharts是一個(gè)用于生成Echarts圖表的Python庫,Echarts是百度開源的一個(gè)數(shù)據(jù)可視化 JS 庫,可以生成一些非??犰诺膱D表,這篇文章主要給大家介紹了關(guān)于Python機(jī)器學(xué)習(xí)之Pyecharts制作可視化大屏的相關(guān)資料,需要的朋友可以參考下2021-10-10
python數(shù)據(jù)分析之時(shí)間序列分析詳情
這篇文章主要介紹了python數(shù)據(jù)分析之時(shí)間序列分析詳情,時(shí)間序列分析是基于隨機(jī)過程理論和數(shù)理統(tǒng)計(jì)學(xué)方法,具體詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考一下2022-08-08
Python實(shí)現(xiàn)約瑟夫環(huán)問題的方法
這篇文章主要介紹了Python實(shí)現(xiàn)約瑟夫環(huán)問題的方法,詳細(xì)分析了約瑟夫環(huán)問題的描述、原理與解決方法,需要的朋友可以參考下2016-05-05
詳解python3中用HTMLTestRunner.py報(bào)ImportError: No module named ''
這篇文章主要介紹了詳解python3中用HTMLTestRunner.py報(bào)ImportError: No module named 'StringIO'如何解決,感興趣的可以了解一下2019-08-08

