拥有“这不应该发生”的说法是否是一种好习惯?

时间:2018-12-15 00:14:02

标签: python

在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的值不正确?

4 个答案:

答案 0 :(得分:2)

即使在当前代码中无法达到默认条件,通常也认为处理默认条件是一种好的做法。原因是代码会随着时间的增长而增长并转移所有权,而当前看来无法达到的条件将来很可能会发生。在这种情况下,最好像您一样引发异常,而不是具有未指定的行为。

答案 1 :(得分:0)

取决于。您不一定想要这样的面向用户的消息,但是它有助于记录这种情况。

答案 2 :(得分:0)

如果由于系统的另一部分行为不正确,或者由于将来的维护人员犯了错误,则有可能发生错误,那么处理错误就很有价值。

如果错误是设计使然,无法更改的系统属性或无法通过先前处理保证的,不能以导致错误的方式改变(不会很明显),则检查会很混乱。

答案 3 :(得分:0)

如果对第一段代码进行更改,而忘记更新第二段代码,则可能会得到轻微的不良结果,而没有灾难性的明显影响,表明有问题。

如果您收到错误的数据,最好完全失败。如果必须对第二部分中的数据进行某些处理,并且仅接收错误数据不会导致严重故障,那么手动确保故障会更安全,因此您可以修复代码,而不是使其不被注意。 >

在大多数情况下,大型故障要比静音故障好。