我正在创建一个python程序,它接受用户输入并使用exec()
来执行它。到目前为止,这是我的代码:
>>> while True:
... var = raw_input('Enter the code: ')
... exec(var)
...
这部分有效。但是,我想在用户输入引发错误的输入时捕获,但我也想打印错误。这就是我所做的:
>>> while True:
... try:
... var = raw_input('Enter the code: ')
... exec(var)
... except * as e:
... print e
...
这引发了自己的错误:
File "<stdin>", line 4
except * as e:
^
SyntaxError: invalid syntax
这是为什么?这不是excepting的正确语法吗?
答案 0 :(得分:2)
使用*
的语法仅用于导入。您想使用Exception as e
,然后稍后将e
作为错误消息调用。
答案 1 :(得分:1)
正确的语法是:
try:
# some code
except Exception as e:
print e
答案 2 :(得分:1)
这不是正确的语法,这是您编辑的代码:
>>> while True:
... try:
... var = raw_input('Enter the code: ')
... exec(var)
... except Exception as e:
... print e
...
使用except * as e
代替except Exception as e
,因为除了导入之外,*
没有与之关联的值。但是,我建议你尽可能少地保留try: ... except: ...
,所以请从试用版中删除raw_input()
,除非你真的想要包围它。
答案 3 :(得分:1)
您遇到语法错误,而不是代码中的异常。捕获所有异常的正确语法是
try:
<your code>
except Exception as e:
print e
“异常”是异常层次结构的根,因此它捕获所有程序(但不是系统)错误。请参阅python教程的Section 8: Errors and Exceptions。