【发布时间】:2013-07-13 15:31:24
【问题描述】:
我有一个脚本,它创建一个临时文本文件并在用户关闭窗口后删除。
问题在于,可能会或可能不会创建临时文本文件,具体取决于用户所做的事情。或者有时可能会在用户退出之前删除临时文本文件。有三种可能的情况。
- 临时文本文件以“tempfilename”的名称创建。
- 临时文本文件以“tempfilename”的名称创建,但在用户退出之前被删除。因此,当尝试删除文件时,它会引发
OSError - 没有创建临时文本文件,也没有创建名为“tempfilename”的变量,所以它引发
NameError
我尝试过使用此代码:
try:
os.remove(str(tempfilename))
except OSError or NameError:
pass
但它似乎只捕获OSError。我是不是做错了什么?
【问题讨论】:
-
你为什么要抓
NameError?你知道只有当你的变量名有错字时才会出现这种情况,对吧? -
@delnan:阅读这个问题,这听起来像是
tempfilename可能无法创建(大概它是在if语句中创建的。我会更改它以添加tempfilename = Noneat开始然后做if tempfilename:,但这不是我的代码 -
@delnan 每当用户单击退出按钮时,我都会执行上述代码。并且文件名变量“tempfilename”仅在用户执行特定任务时创建。有时用户不做任何事情就关闭了脚本,因此甚至没有创建变量名“tempfilename”。在这种情况下,它会给我
NameError。我是初学者,所以不确定我是否做对了。但无论什么工作.. :D -
@ChrisAung 总是定义变量,初始化为一些虚拟值(例如
None)。恕我直言,这不仅更干净,而且代码更少,您可以停止捕获NameError,这可能会隐藏合法错误(例如拼写错误)。
标签: python exception-handling error-handling