如何在python中捕获所有这些异常?

如何在python中捕获所有这些异常?,python,exception,python-2.7,try-catch,Python,Exception,Python 2.7,Try Catch,我正在制作一个python程序,它接受用户输入并使用exec()执行它。以下是我目前的代码: >>> while True: ... var = raw_input('Enter the code: ') ... exec(var) ... 这部分是有效的。但是,我希望在用户输入引起错误的输入时捕获,但我也希望打印错误。这就是我所做的: >>> while True: ... try: ... var = ra

我正在制作一个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
文件“”,第4行
除*外,作为e:
^
SyntaxError:无效语法

为什么会这样?这不是例外的正确语法吗?

正确的语法应该是:

try:
    # some code
except Exception as e:
    print e

这不是正确的语法,以下是您编辑的代码:

>>> while True:
...     try:
...             var = raw_input('Enter the code: ')
...             exec(var)
...     except Exception as e:
...             print e
...

使用
Exception as e
,而不是
Exception*as e
,因为
*
除了在导入中之外,没有与之关联的值。但是,我建议您保留
try:。。。除了:…
尽可能少,所以从try中删除
raw\u input()
,除非您真的想围绕它。

您遇到了语法错误,代码中没有异常。捕获所有异常的正确语法是

try:
    <your code>
except Exception as e:
    print e
试试看:
例外情况除外,如e:
打印e

“异常”是异常层次结构的根,因此它捕获所有程序(但不是系统)错误。请参见python教程的第1部分

使用
*
的语法仅在导入中使用。您想使用异常作为e,然后稍后调用异常作为错误消息。

您从哪里知道这是有效的语法?