强制错误时无法获取除语句以外的其他打印内容

时间:2019-12-10 23:23:22

标签: python python-3.x error-handling

强制错误时,我似乎无法打印出我的except语句。

<Location / >
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !/api/*        ## THIS IS THE LINE TO ADD!
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . /index.html [L]
</Location>

2 个答案:

答案 0 :(得分:0)

以下行;

if plant in PLANT_DATA.keys():

检查提供的键在字典中是否存在。您永远不会到达except子句,因为您已经在前面的代码中执行了检查。这就是为什么每当您输入不正确的值时,它都会再次提示您输入问题。

如果您需要打印错误,请尝试此操作。

if plant not in PLANT_DATA.keys(): 
    print("That is not a valid plant! Please try again.")

else:
    print("Looks like you want to hear about {} plants!".format(city))

答案 1 :(得分:0)

您快到了。是的:

print("Looks like you want to hear about {} plants!".format(city))

几乎可以肯定会引发错误,因为未定义city。但这不是保证引发错误的原因,因为您有逻辑阻止程序:

if plant in PLANT_DATA.keys():

如果不是True,则永远不会进入异常处理程序。它将回到外部while循环的另一个循环。要超越此限制,您需要输入key中的有效PLANT_DATA。因此,将daisyrosecucumber作为输入将清除此检查并确保您抛出错误。但是,它将是NameError,而不是ValueError

抛出错误非常容易;例如,int('hi')会引发错误,但根本不适合您要尝试的内容。因此,我认为您在不改变逻辑的情况下保持原样是正确的。您正在流连python testing(这不是一件坏事)