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

时间:2014-03-03 04:33:28

标签: python exception python-2.7 try-catch

我正在创建一个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的正确语法吗?

4 个答案:

答案 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