异常处理如何使代码变得简洁高效可控:以python为例

写代码的时候,习惯考虑很多细节问题。比如输入类型的合法性,值的合法性等等。
所以在进入代码的核心部分之前,有很大篇幅的代码都是一些if else语句。
这样并不是不好,而是当输入比较复杂的时候,就要考虑非常多的细节。
在核心代码之前放一堆if else,会影响一段代码的紧凑性,也会使维护变得困难。

比如需要校验输入中有没有这些key,输入的类型是str,还是list,是否符合预期等等。
如果说一个输入连基本的key都不对,那么可以认为这是一个异常。这样的情况完全可以用异常处理。我见过有的人就会这样去写:

if 'key1' in data and 'key2' in data and 'key3' in data:
	if type(data['key1']) == list and type(data['key2']) == str and  type(data['key3']) == str:
		for datas in data['key1']
			value1 = data[key1]
		value2 = data[key2]
		value3 = data[key3]
...

上面的代码还不算太复杂,因为只是随便造了一点数据。这种代码也不是不好,只是这不是严格意义的输入校验,而更像是一种异常。如果是一般的输入校验,当然最好用if语句去处理。因为异常本来就是用来处理异常的,况且有的语言是没有异常这种工具可以用的。
但是对于这种连key都不存在的异常输入,更优雅的写法是进行异常捕获

try:
	for datas in data[key1]
		value1 = data[key1]
	value2 = data[key2]
	value3 = data[key3]
except TypeError as e:
	do some thing with e
except KeyError as e:
	do some thing with e
except Exception as e:
	do some thing with e

这样的代码紧凑,优雅,维护成本更低。
当然了,我们需要熟悉一个编程语言的常见异常种类,才能够在处理异常情况的时候得心应手。
对于不太熟悉的异常,去官网一搜就有。

注意

但是千万不要写成这种代码:

try:
	for datas in data[key1]
		value1 = data[key1]
	value2 = data[key2]
	value3 = data[key3]
except Exception as e:
	do some thing with e

因为没有详细的异常种类,出了错也没有适当的处理,也不好排查错误原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值