在程序的多个部分捕获ValueError

时间:2019-03-30 21:22:16

标签: python error-handling python-3.5 valueerror

当变量变为负数时,我试图提高ValueError。我的问题是,此变量更改了程序中某些部分的值。仅使用一条raise语句,如何能达到以下相同的结果?

import random

a = 5

while True:

    a -= random.randint(0,10)
    if a < 0:
        raise ValueError('Cannot be negative')

    a += random.randint(0,10)
    if a < 0:
        raise ValueError('Cannot be negative')

    a -= random.randint(0,10)
    if a < 0:
        raise ValueError('Cannot be negative')

    a += random.randint(0,10)
    if a < 0:
        raise ValueError('Cannot be negative')

谢谢

2 个答案:

答案 0 :(得分:1)

我建议为变量使用getter / setter,然后检入setter。这正是它们存在的原因

答案 1 :(得分:0)

由于必须在错误变为负数时才引发错误,因此每次减小变量时都必须检查ValueError。添加后无需检查ValueError,因为如果它不是负数,则添加后就不会为负数。如果您只想在代码中仅放置raise ValueError('Cannot be negative')行,则可以这样:

import random

a = 5

while True:

    a -= random.randint(0,10)
    if a < 0:
        raise ValueError('Cannot be negative')
    a += random.randint(0,10)