【问题标题】:How do I catch all of these exceptions in python?如何在 python 中捕获所有这些异常?
【发布时间】:2014-03-03 04:33:28
【问题描述】:

我正在制作一个接受用户输入并使用exec() 执行它的python 程序。到目前为止,这是我的代码:

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

这是为什么?这不是异常的正确语法吗?

【问题讨论】:

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

标签: python exception python-2.7 try-catch


【解决方案1】:

使用* 的语法仅用于导入。您想使用Exception as e,然后稍后调用e 作为错误消息。

【讨论】:

    【解决方案2】:

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

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

    使用except Exception as e 代替except * as e,因为* 除了在导入中之外没有与之关联的值。但是,我建议您尽可能少地保留try: ... except: ...,因此请从尝试中删除raw_input(),除非您真的想将其包围。

    【讨论】:

      【解决方案3】:

      正确的语法是:

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2023-03-03
          • 1970-01-01
          • 1970-01-01
          • 2018-05-23
          • 1970-01-01
          • 2011-10-12
          • 2023-03-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多