在程序的多个部分捕获 ValueError
Catch ValueError in multiple parts of program
我试图在变量变为负数时引发 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')
谢谢
由于必须在错误变为负数时引发错误,因此每次减小变量时都必须检查 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)
我建议为您的变量使用 getter/setter,并检查 setter。这正是它们存在的原因
我试图在变量变为负数时引发 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')
谢谢
由于必须在错误变为负数时引发错误,因此每次减小变量时都必须检查 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)
我建议为您的变量使用 getter/setter,并检查 setter。这正是它们存在的原因