python的异常处理小纪

本文深入探讨了Python中的异常处理机制,包括try-except-else-finally块的使用。通过示例展示了如何捕获并处理ZeroDivisionError、FileNotFoundError等常见错误,以及如何在异常发生时确保资源的释放。此外,还讲解了如何通过else块处理正常执行的代码,以及如何利用finally块确保关键操作的执行。文章最后提供了一个完整的json读取和更新的异常处理示例,强调了混合使用异常处理结构的重要性。

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

异常处理
在python中管理发生的错误就会创建‘异常’--特殊对象
异常一般使用try-except代码块处理,可以反馈友好的错误信息

try:
    print 5/0
except ZeroDivisionError:
    print 'error divide'
else:
    print 'correct result'

try-except-else代码块的工作原理大致如下:
Python尝试执行try代码块中的代码;
只有可能引发异常的代码才需要放在try语句中。
有一些仅在try代码块成功执行时才需要运行的代码,应放在else代码块中。
except代码块告诉Python,如果它尝试运行try代码块中的代码时引发了指定的异常,该怎么办。 

FileNotFoundError 文件不存在

失败的时候顺其自然可以使用pass
Python的错误处理结构让你能够细致地 控制与用户分享错误信息的程度,要分享多少信息由你决定

1,finally块
保证异常发生时稳定的执行处理操作

try:
    data = handle.read()
finally:
    handle.close()

向上传递异常的同时可靠关闭句柄
2,else块
使用except与else可以清晰区分不同异常的处理
3,混合使用
需要建立完整的过程,切分不同块的职能
try,except,else,finally
eg,处理json读取

def divide_json(path):
	handle = open(path, 'r+')	# may IOError
	try:
		data = handle.read()	# may UnicodeDecodeError
		op = json.loads(data)	# may raise ValueError
		value = (op['num']/op['value'])	# may ZeroDivisionError
	except ZeroDivisionError as e:
		return UNDEFINED
	else:
		result = json.dumps(value)
		handle.seek(0)
		handle.write(result)	# may IOError
		return value
	finally:
		handle.close()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值