<p>因为你要求更正或解释。在</p>
<p>从你的代码中</p>
<pre><code>try:
print("Abbreviation is ", bearNames[userBear])
print("Attributes are ", bearAttributes[bearNames[userBear]])
print("beartruth: ", beartruth)
beartruth = False
print("beartruth: ", beartruth)
except:
print("Something went wrong - did you not type a bear name?")
print("beartruth: ", beartruth)
</code></pre>
<p>您可以对<em>异常</em>进行具体说明(我建议这样做),以确保隔离出您可能预期的错误。在</p>
^{2}$
<p>这样做的话,你知道熊其实不是一只。而且只有当<em>Bear</em>是一个真正的Bear时,您才能进入<code>else</code>块来做其他事情。在</p>
<p>如果在最后4行中出错,则引发的异常将不同,并且不会被泛型隐藏</p>
<pre><code>except:
</code></pre>
<p>块,这也会隐藏其他错误,但您会认为这是来自用户的错误输入。在</p>
<p>因为您处于<code>while</code>循环中,您可以选择执行以下操作:</p>
<pre><code>try:
print("Abbreviation is ", bearNames[userBear])
except KeyError:
print("Something went wrong - did you not type a bear name?")
print("beartruth: ", beartruth)
continue # go back to the beginning of the loop
# There was no error and continue wasn't hit, the Bear is a bear
print("Attributes are ", bearAttributes[bearNames[userBear]])
print("beartruth: ", beartruth)
beartruth = False
print("beartruth: ", beartruth)
</code></pre>