Python - 如何捕获方法内部的异常

Gab*_*ira 1 python exception

我想知道是否有办法在被调用的方法中捕获异常.

例:

def foo(value):
    print value

foo(x)
Run Code Online (Sandbox Code Playgroud)

这将抛出NameError异常,因为未声明x.我想在foo方法中捕获这个NameError异常.有办法吗?

Mar*_*off 9

NameError发生时x试图进行评估. foo永远不会进入,所以你无法赶上NameError内心foo.

我想你的想法就是当你这样做时foo(x),foo进入,然后x被抬起头来.你想说,"我不知道是什么x",而不是让自己NameError被提升.

不幸的是(对于你想要做的事情),Python几乎与其他所有编程语言一样,在将它们传递给函数之前对其参数进行求值.没有办法阻止从内部NameError传入的值.foo foo

  • @Gabriel:没有什么区别.在输入方法之前仍然评估`x`.你可以做`argument = x; foo(参数)`几乎等价,但当然`NameError`会更快地被提出,尽管仍然在方法之外. (3认同)