Python 2.7:由于“引发”而未被异常捕获的错误

问题描述 投票:-1回答:1

这是我的代码:

import pandas as pd
df2 = pd.DataFrame()

try:
    df_task = df_task.append(df2, ignore_index = True)
except NameError:
    df_task = df2
raise

它会产生以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 540, in runfile
    execfile(filename, namespace)
  File "/home/cld_intern/.spyder2/.temp.py", line 12, in <module>
    df_task = df_task.append(df2, ignore_index = True)
NameError: name 'df_task' is not defined

except块应该捕获NameError,但不知何故包含“raise”而不指定要引发的异常会产生NameError。为什么会这样?


这完美运行:

import pandas as pd
df2 = pd.DataFrame()

try:
    df_task = df_task.append(df2, ignore_index = True)
except NameError:
    df_task = df2

这也按预期运行:

import pandas as pd
df2 = pd.DataFrame()

try:
    df_task = df_task.append(df2, ignore_index = True)
except NameError:
    df_task = df2
raise Exception("error message")

使用以下回溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 540, in runfile
    execfile(filename, namespace)
  File "/home/cld_intern/.spyder2/.temp.py", line 15, in <module>
    raise Exception("error message")
Exception: error message
python python-2.7 exception nameerror
1个回答
0
投票

在python 3中:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: name 'df_task' is not defined

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
NameError: name 'df2' is not defined

在python2.7中

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
NameError: name 'df2' is not defined

你确定你使用的是python 2.7吗?就像在评论中提到的那样,df2我没有定义。

© www.soinside.com 2019 - 2024. All rights reserved.