在程序的多个部分中捕获ValueError

问题描述 投票:0回答:2

当变量变为负数时,我试图提高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')

谢谢

python error-handling python-3.5 valueerror
2个回答
1
投票

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


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)
© www.soinside.com 2019 - 2024. All rights reserved.