繁体   English   中英

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

[英]How do I catch all of these exceptions in python?

我正在制作一个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

为什么是这样? 这不是排除的正确语法吗?

使用*的语法仅在导入中使用。 您想将Exception as e ,然后在以后将e用作错误消息。

正确的语法为:

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
...

可以使用except Exception as e ,而不要使用except * as e ,而不是将except Exception as e ,因为*不能与之相关联,除非在导入中。 但是,我建议您try: ... except: ...不要try: ... except: ...尽可能少,因此请从尝试中删除raw_input() ,除非您也确实希望将其包围。

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

try:
    <your code>
except Exception as e:
    print e

“异常”是异常层次结构的根,因此它捕获所有程序(但不是系统)错误。 请参阅python教程的第8节:错误和异常

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM