<p>您使用的属性名称不一致。你处理异常很好,只是把名字弄混了。你知道吗</p>
<p>两个异常使用<code>lineNumber</code>作为属性:</p>
<pre><code>class UnknownCommandException(Exception):
"""this exception is thrown when a nonexistant command is used."""
def __init__(self, inst, line):
self.inst = inst
self.lineNumber = line
# ^^^^^^^^^^
class UndeclaredLabelException(Exception):
"""this exception is thrown when a label is used but has not been declared."""
def __init__(self, label, line):
self.badLabel = label
self.lineNumber = line
# ^^^^^^^^^^
</code></pre>
<p>但是异常处理程序正在尝试访问<code>line</code>属性:</p>
<pre><code>except UndeclaredLabelException as e:
print("undeclared label '{}' near line {}".format(e.label, e.line))
# ^^^^
print(e)
except UnknownCommandException as e:
print("unknown command '{}' near line {}".format(e.inst, e.line))
# ^^^^
print(e)
</code></pre>
<p>还要注意<code>UndeclaredLabelException.badLabel</code>和<code>e.label</code>属性。你知道吗</p>
<p>重命名类上的属性,或者访问异常处理程序中的正确属性。你知道吗</p>