除语句中','和'as'之间有什么区别,例如:
try:
pass
except Exception, exception:
pass
Run Code Online (Sandbox Code Playgroud)
和:
try:
pass
except Exception as exception:
pass
Run Code Online (Sandbox Code Playgroud)
第二种语法在2.6中合法吗?它适用于Windows上的CPython 2.6,但cygwin中的2.5解释器抱怨它无效.
如果它们在2.6中都有效,我应该使用哪个?
我应该如何"重新抛出"异常,也就是说,假设:
如果我从(失败的)解决方法中抛出异常,那对用户来说会非常混乱,所以我认为最好重新抛出原始异常(?),并附带描述性回溯(关于实际的)问题)...
注意:这方面的激励示例是在调用时np.log(np.array(['1'], dtype=object)),它尝试一个诙谐的解决方法并给出一个AttributeError(它"真的"一个TypeError).
我能想到的一种方法就是重新调用有问题的函数,但这似乎是伪造的(理论上,原始函数可能会在第二次调用时发挥一些不同的行为):
好的,这是一个可怕的例子,但是...
def f():
raise Exception("sparrow")
def g():
raise Exception("coconut")
def a():
f()
Run Code Online (Sandbox Code Playgroud)
假设我这样做了:
try:
a()
except:
# attempt witty workaround
g()
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-4-c76b7509b315> in <module>()
3 except:
4 # attempt witty workaround
----> 5 g()
6
<ipython-input-2-e641f2f9a7dc> in g()
4
5 def g():
----> 6 raise Exception("coconut")
7
8
Exception: coconut
Run Code Online (Sandbox Code Playgroud)
嗯,问题根本不在于椰子,而是麻雀: …