Python 2.7异常处理语法

tam*_*mil 6 python exception python-2.7

我对Python 2.7中的try异常用法感到困惑。

try:
    raise valueError("sample value error")
except Exception as e:
    print str(e)    

try:
    raise valueError("sample value error")
except Exception,exception:
    print str(exception)


try:
    raise valueError("sample value error")
except exception:
    print str(exception)


try:
    raise valueError("sample value error")
except Exception:
    print str(Exception) # it prints only the object reference
Run Code Online (Sandbox Code Playgroud)

可以帮助我理解上述用法吗?

hol*_*roy 7

一些概念可帮助您了解变体的替代变体之间的区别except

  • except Exception, e –这是一个较旧的变体,现已弃用,类似于 except Exception as e
  • except Exception as e–捕获类型Exception(或任何子类)的异常并将其存储在变量中,e以进行进一步处理,消息传递或类似操作
  • except Exception–捕获类型Exception(或任何子类)的异常,但忽略异常中提供的值/信息
  • except e –给我一个编译错误,不确定是否与python版本有关,但如果这样,则应该/将意味着您不在乎异常的类型,而是希望访问其中的信息
  • except –捕获任何异常,并忽略异常信息

使用什么取决于许多因素,但是如果您除例外情况下不需要提供的信息,则无需提供变量来捕获此信息。

关于Exception捕获的类型,请注意捕获准确的异常类型。如果您正在编写一个通用的文章,那么使用可能是正确的except Exception,但是在示例中,您给出的情况我将选择except ValueError直接使用。这将允许在代码的另一级别正确处理潜在的其他异常。关键是,不要捕获尚未准备好处理的异常。

如果需要,您可以在官方文档中阅读有关python 2.7异常处理可用的python 2.7异常的更多信息。


小智 6

对于 Python 3(也适用于 Python 2.7):

try:
      raise ValueError("sample value error")
except Exception as e:
      print(e)
Run Code Online (Sandbox Code Playgroud)

对于 Python 2(不适用于 Python 3):

try:
      raise ValueError("sample value error")
except Exception as e:
      print(e)
Run Code Online (Sandbox Code Playgroud)


Mat*_*nez -1

使用格式

try:
    raise ValueError("sample value error")
except Exception, e:
    print e
Run Code Online (Sandbox Code Playgroud)