python中异常处理 try except finally else 执行顺序详解

本文深入解析Python中的异常处理机制,包括try-except语句的使用,如何捕获和处理特定类型的异常,以及else和finally子句的作用。通过具体示例展示如何在实际编程中有效运用异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

try:
	可能触发异常的语句
except 错误类型1 [as 变量2]:
	异常处理语句1
except 错误类型2 [as 变量2]:
    异常处理语句2
except (错误类型3,错误类型4,······) [as 变量3]:
    异常处理语句3
except:
		异常处理语句other
else:
		未发生异常的语句
finally:
		最终语句
异常流
说明:
except子句可以有一个或多个,但至少要有一个
as子句是用于绑定错误对象的变量,可以省略
else子句最多只能有一个,也可以省略
finally子句最多只能有一个,也可以省略不写
处理说明:
	except子句用来捕获和处理某种类型的错误发生时,处理异常
	except 子句会根据错误的类型进行匹配,如匹配成功则调用异常处理语句进行处理,然后程序转为正常状态
	如果except子句没有匹配到任何类型的异常则转到except:子句
	如果没有任何except子句进行处理,则程序的异常状态会继续下去,并向上层传递
	如果没有异常,则执行else子句中的语句
	最终执行finally子句中语句,finally里的代码块执行完毕,代表try语句执行完,则进入正常状态,try语句之外的语句还是照常执行

 

# 简单示例
def learn_try():
	try:
		raise ValueError("值错误")
	except Exception as e:
		print(e)
		return e
	else:
		# else语句在无异常时执行
		print("try中的else")
	finally:
		# finally语句是一定执行的语句
		print("Done")

learn_try()
示例
def div_apple(n):
    print("现有", n, '个苹果,请问分给几个人')
    d = int(input("请输入人数:  "))
    print("每个人分", n/d, '个苹果')


try:
    div_apple(10)
except ValueError:			#转为正常状态
    print('值转换错误异常')
    print(ValueError)		

except ZeroDivisionError as r: #打印r和打印前面的异常类型结果不同,r是异常信息,异常类型是一个地址,并转为正常状态
    print("出现被除数为0的异常", end = '\n\n')

except:   #转为正常状态
    print('异常在以上语句中为捕捉到,本公主才出马')
else:
    print("程序没有出现异常状态时,执行此语句")
finally:
    print("我是必须执行的语句")

print("try语句外的语句")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值