python 忽略异常_如何正确忽略异常

通常认为最好的做法是只捕捉你感兴趣的错误。如属shutil.rmtree可能是OSError:>>> shutil.rmtree("/fake/dir")

Traceback (most recent call last):

[...]

OSError: [Errno 2] No such file or directory: '/fake/dir'

如果您想要默默地忽略该错误,请执行以下操作:try:

shutil.rmtree(path)

except OSError:

pass

为什么?假设您(不知怎么地)不小心将函数传递为整数而不是字符串,如下所示:shutil.rmtree(2)

它会造成错误TypeError:胁迫Unicode:需要字符串或缓冲区,int找到-您可能不想忽略这一点,这可能很难调试。

如果你一定要忽略所有错误,捕获Exception而不是光秃秃的except:声明。再说一遍,为什么?

不指定异常捕获每一,每个异常,包括SystemExit异常,例如sys.exit()用途:>>> try:

...     sys.exit(1)

... except:

...     pass

...

>>>

将其与正确退出的以下内容进行比较:>>> try:

...     sys.exit(1)

... except Exception:

...     pass

...

shell:~$

如果您想编写更好的行为良好的代码,OSError异常可以表示各种错误,但在上面的示例中,我们只想忽略Errno 2因此,我们可以更加具体地:try:

shutil.rmtree(path)

except OSError, e:

if e.errno == 2:

# suppress "No such file or directory" error

pass

else:

# reraise the exception, as it's an unexpected error

raise

你也可以import errno并更改if到if e.errno == errno.ENOENT:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值