Python學(xué)習(xí)之異常處理的避坑指南
最終想了想,還是把這個章節(jié)單獨拎出來,雖然字數(shù)不多。
在代碼中,存在return也應(yīng)當(dāng)執(zhí)行finally;
存在return時,else是不執(zhí)行的;
無return時,else正常執(zhí)行;
如果發(fā)生異常,則else也不執(zhí)行
finally 與 return 的執(zhí)行順序
示例代碼如下:
class Test(object):
? ? def division(self, num1, num2):
? ? ? ? try:
? ? ? ? ? ? if num2 == 0:
? ? ? ? ? ? ? ? return '除數(shù)不能為0'
? ? ? ? ? ? avg = num1 / num2
? ? ? ? ? ? return avg
? ? ? ? except Exception as e:
? ? ? ? ? ? print('ERROR')
? ? ? ? finally:
? ? ? ? ? ? print('FINALLY')
if __name__ == '__main__':
? ? test = Test()
? ? print(test.division(6, 0))
? ??
# >>> 執(zhí)行結(jié)果如下:
# >>> FINALLY
# >>> 除數(shù)不能為0?注意:即使有return也要是會執(zhí)行finally的,而且是在return之前執(zhí)行它。那么最后的結(jié)果為。
else 與 return 的執(zhí)行順序
示例代碼如下:
class Test(object):
? ? def division(self, num1, num2):
? ? ? ? try:
? ? ? ? ? ? avg = num1 / num2
? ? ? ? ? ? return avg
? ? ? ? except Exception as e:
? ? ? ? ? ? print('ERROR')
? ? ? ? else:
? ? ? ? ? ? print('No ERROR')
? ? ? ? finally:
? ? ? ? ? ? print('FINALLY')
if __name__ == '__main__':
? ? test = Test()
? ? print(test.division(6, 2))
# >>> 執(zhí)行結(jié)果如下:
# >>> FINALLY
# >>> 3.0注意:有return時else是不執(zhí)行的。所以執(zhí)行結(jié)果如上面的示例代碼
那么 無 return 時,執(zhí)行結(jié)果又怎樣?
class Test(object):
? ? def division(self, num1, num2):
? ? ? ? try:
? ? ? ? ? ? avg = num1 / num2
? ? ? ? ? ? # return avg
? ? ? ? except Exception as e:
? ? ? ? ? ? print('ERROR')
? ? ? ? else:
? ? ? ? ? ? print('No ERROR')
? ? ? ? finally:
? ? ? ? ? ? print('FINALLY')
if __name__ == '__main__':
? ? test = Test()
? ? print(test.division(6, 2))
? ??
# >>> 執(zhí)行結(jié)果如下:
# >>> No ERROR
# >>> FINALLY
# >>> None從運行結(jié)果我們得出結(jié)論:無return時,正常執(zhí)行else 。
如果是發(fā)生異常的情況下, else 也是不會執(zhí)行的。代碼示例如下:
class Test(object):
? ? def division(self, num1, num2):
? ? ? ? try:
? ? ? ? ? ? avg = num1 / num2
? ? ? ? ? ? return avg
? ? ? ? except Exception as e:
? ? ? ? ? ? print('ERROR')
? ? ? ? else:
? ? ? ? ? ? print('No ERROR')
? ? ? ? finally:
? ? ? ? ? ? print('FINALLY')
if __name__ == '__main__':
? ? test = Test()
? ? print(test.division(4, 0))
? ??
# >>> 執(zhí)行結(jié)果如下:
# >>> ERROR
# >>> FINALLY
# >>> None總結(jié)
1、finally 與 return 的執(zhí)行 順序;即使有 return 也要執(zhí)行 finally 的, 而且是在 return 之前執(zhí)行它。
2、else 與 return 的執(zhí)行順序;有 return 時, else 是不執(zhí)行的。無 return 時, 正常執(zhí)行的 else 如果發(fā)生異常則不會繼續(xù)執(zhí)行else。
到此這篇關(guān)于Python學(xué)習(xí)之異常處理的避坑指南的文章就介紹到這了,更多相關(guān)Python異常處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談pandas篩選出表中滿足另一個表所有條件的數(shù)據(jù)方法
今天小編就為大家分享一篇淺談pandas篩選出表中滿足另一個表所有條件的數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
Python 爬蟲實現(xiàn)增加播客訪問量的方法實現(xiàn)
這篇文章主要介紹了Python 爬蟲實現(xiàn)增加播客訪問量的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
keras獲得model中某一層的某一個Tensor的輸出維度教程
今天小編就為大家分享一篇keras獲得model中某一層的某一個Tensor的輸出維度教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01

