python拋出異常raise python的try方法中的else和finally的區(qū)別?
python的try方法中的else和finally的區(qū)別?如下所示:(R輸出:(R)在try中引發(fā)一個(gè)異常,它將在exception中立即執(zhí)行。當(dāng)在異常中遇到return時(shí),將強(qiáng)制在finally中
python的try方法中的else和finally的區(qū)別?
如下所示:(R
輸出:(R)在try中引發(fā)一個(gè)異常,它將在exception中立即執(zhí)行。當(dāng)在異常中遇到return時(shí),將強(qiáng)制在finally中執(zhí)行。在finally中遇到return時(shí),會(huì)返回輸出:try中沒(méi)有拋出異常,因此不會(huì)在exception中執(zhí)行,但是在try中遇到return時(shí),會(huì)立即強(qiáng)制在finally中執(zhí)行,并在finally中返回test1和test2的結(jié)果,無(wú)論是在try中還是except中,當(dāng)遇到return時(shí),只要設(shè)置了finally語(yǔ)句,當(dāng)前return語(yǔ)句就會(huì)被中斷,執(zhí)行就會(huì)跳到finally。如果在finally中遇到return語(yǔ)句,則直接返回,而不是跳回try/excpet中中斷的return語(yǔ)句;當(dāng)在except和try中遇到return時(shí),return的值將被鎖定,然后跳轉(zhuǎn)到finally。如果finally中沒(méi)有return語(yǔ)句,則finally執(zhí)行后返回原來(lái)的返回點(diǎn),并返回之前鎖定的值(即finally中的動(dòng)作不影響返回值)。如果finally中有return語(yǔ)句,那么finally中的return語(yǔ)句將被執(zhí)行。R輸出test5的結(jié)論:在一個(gè)循環(huán)中,在跳出循環(huán)之前,它將首先轉(zhuǎn)到finally execute,然后開(kāi)始下一輪循環(huán)。使用自定義異常,可以跳出深嵌套循環(huán)。請(qǐng)看我所做的示例:class foundexception(exception):pass
try:[對(duì)于行,記錄在]枚舉(表):
對(duì)于列,字段在枚舉(記錄):
對(duì)于索引,項(xiàng)在枚舉(字段):
如果項(xiàng)==目標(biāo):
引發(fā)FoundException()
除了FoundException:
打?。ā痹冢▄0},{1},{2})”。格式(行,列,索引))
否則:
打?。ā蔽凑业健埃?/p>