以下代码不起作用:
try:
get_current_player(request).cash >= bid # does the player have enough cash for this bid ?
except ValueError:
messages.error(request, "You don't have the necessary funds to place a bid of <span class='cash'>%d</span> !" % (bid))
messages.success(request, "You placed a bid of %d !" % (bid))
当出价高于当前玩家的现金时,将打印成功消息而不是错误消息。
但是,以下代码有效,表明值是正确的:
if get_current_player(request).cash >= bid : # does the player have enough cash for this bid ?
messages.success(request, "You placed a bid of %d !" % (bid))
else :
messages.error(request, "You don't have the necessary funds to place a bid of <span class='cash'>%d</span> !" % (bid))
我使用try / except错误吗?
答案 0 :(得分:2)
是的,你正在使用try / except错误。比较不会抛出任何异常,因为如果结果为False则不例外。你的第二个代码是处理这个问题的正确方法。
答案 1 :(得分:0)
如果您希望比较try
始终有效并且不会产生错误,则不应使用except
/ get_current_player(request).cash >= bid
。在第二段代码中使用if
/ else
。
使用您的第一个代码块,我会尝试get_current_player(request).cash >= bid
并将其评估为True
/ False
。只要这个比较没有产生ValueError
(并且没有明显的原因),except
块就不会执行。
except
块不会仅因为比较评估为False
而运行。
修改:如果您认为评估get_current_player(request).cash >= bid
可能会引发异常,您可以将if
/ else
块放在{ {1}}阻止:
try
您可能希望允许比较可能触发的任何其他错误(例如try:
if get_current_player(request).cash >= bid:
messages.success(request, "You placed a bid of %d !" % (bid))
else:
messages.error(request, "You don't have the necessary funds to place a bid of <span class='cash'>%d</span> !" % (bid))
except ValueError:
# handle the ValueError
)。
答案 2 :(得分:0)
为什么会这样
get_current_player(request).cash >= bid
应该返回错误?这是错的吗?不,这就是为什么你没有ValueError。