尝试/除了没有捕获"大于"错误

时间:2014-10-05 16:11:40

标签: python django try-except

以下代码不起作用:

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错误吗?

3 个答案:

答案 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。