强制 try-except 失败的最佳方法 (Python)?
Best way to force a try-except to fail (Python)?
我正在编写一个代码,要求用户进行两个输入,然后将使用 try: 检查它们是否都是整数,然后使用 If 语句检查它们是否都大于 0。如果这些条件中的任何一个不符合则显示错误'Positive non zero integers only please.'。显示此消息的最佳方式是什么,无论它失败的原因如何,而只需编写该行一次(而不是在 If 语句之后有另一行打印)?如果 If 语句为真,我在下面有一行随机文本,这会导致 try: 失败并且代码为 运行 the except:
try:
runs, increment = int(runs), int(increment)
if (increment == 0):
print ("I can't increment in steps of 0.")
elif (increment < 0 or runs <= 0):
this line has no meaning, and will make the program go to the except: section
except:
print('Positive non zero integers only please.')
这是我想要的,但并不是一个很好的解决方案,所以我很好奇是否还有其他可能有效的方法,或者我应该在 if 语句之后放置相同的打印行吗? (我不能为每个失败单独写消息,因为这是一个学校项目,所以输出需要与我们得到的完全一样)
你想要的是raise
语句:
try:
runs, increment = int(runs), int(increment)
if increment < 1 or runs < 1:
raise ValueError
except ValueError:
print("Positive non zero integers only please.")
请注意,如果 int()
无法将值转换为 int,则会引发 ValueError
,因此 except ValueError
应该捕捉任何一种情况。 (有一个捕获未知错误的裸 except:
是一个坏习惯,它会使您的代码更难调试;最好早点打破它!)
我正在编写一个代码,要求用户进行两个输入,然后将使用 try: 检查它们是否都是整数,然后使用 If 语句检查它们是否都大于 0。如果这些条件中的任何一个不符合则显示错误'Positive non zero integers only please.'。显示此消息的最佳方式是什么,无论它失败的原因如何,而只需编写该行一次(而不是在 If 语句之后有另一行打印)?如果 If 语句为真,我在下面有一行随机文本,这会导致 try: 失败并且代码为 运行 the except:
try:
runs, increment = int(runs), int(increment)
if (increment == 0):
print ("I can't increment in steps of 0.")
elif (increment < 0 or runs <= 0):
this line has no meaning, and will make the program go to the except: section
except:
print('Positive non zero integers only please.')
这是我想要的,但并不是一个很好的解决方案,所以我很好奇是否还有其他可能有效的方法,或者我应该在 if 语句之后放置相同的打印行吗? (我不能为每个失败单独写消息,因为这是一个学校项目,所以输出需要与我们得到的完全一样)
你想要的是raise
语句:
try:
runs, increment = int(runs), int(increment)
if increment < 1 or runs < 1:
raise ValueError
except ValueError:
print("Positive non zero integers only please.")
请注意,如果 int()
无法将值转换为 int,则会引发 ValueError
,因此 except ValueError
应该捕捉任何一种情况。 (有一个捕获未知错误的裸 except:
是一个坏习惯,它会使您的代码更难调试;最好早点打破它!)