在python中(通常是编码),是一种永远不会发生的错误的好习惯,还是仅仅是代码混乱?
例如
if thing:
num = 1
elif thing2:
num = 2
else:
num = 3
#Lots of other code goes here interacting with num, but not modifying it
if num == 1:
option1()
elif num == 2:
option2()
elif num == 3:
option3()
else:
#this should never happen
print("Instead of being 1, 2, or 3, num was " + str(num))
raise Exception("Error! num was an unexpected value!")
因此,基本上,是否包括最后的其他方法(永远都不会发生)是好的做法,还是只是弄乱了代码?
我的真实代码比这复杂得多-具体来说,num是在主循环中分配的,然后传递给函数。也许值得包括在内,因为该函数可能是从其他地方调用的,而num的值不正确?
答案 0 :(得分:2)
即使在当前代码中无法达到默认条件,通常也认为处理默认条件是一种好的做法。原因是代码会随着时间的增长而增长并转移所有权,而当前看来无法达到的条件将来很可能会发生。在这种情况下,最好像您一样引发异常,而不是具有未指定的行为。
答案 1 :(得分:0)
取决于。您不一定想要这样的面向用户的消息,但是它有助于记录这种情况。
答案 2 :(得分:0)
如果由于系统的另一部分行为不正确,或者由于将来的维护人员犯了错误,则有可能发生错误,那么处理错误就很有价值。
如果错误是设计使然,无法更改的系统属性或无法通过先前处理保证的,不能以导致错误的方式改变(不会很明显),则检查会很混乱。
答案 3 :(得分:0)
如果对第一段代码进行更改,而忘记更新第二段代码,则可能会得到轻微的不良结果,而没有灾难性的明显影响,表明有问题。
如果您收到错误的数据,最好完全失败。如果必须对第二部分中的数据进行某些处理,并且仅接收错误数据不会导致严重故障,那么手动确保故障会更安全,因此您可以修复代码,而不是使其不被注意。 >
在大多数情况下,大型故障要比静音故障好。