ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 我应该总是在`except`语句中指定一个异常类型吗?

2019-09-15 12:55:06  阅读:322  来源: 互联网

标签:python exception pep8


使用PyCharm IDE时,使用except:没有异常类型会触发IDE提醒此异常条款过于宽泛.

我应该忽略这个建议吗?或者是Pythonic总是具体的异常类型?

解决方法:

指定显式异常类型几乎总是更好.如果你使用一个裸的except:子句,你可能最终会捕获除了你期望捕获的异常之外的异常 – 这可以隐藏错误或者当它们没有按照你期望的方式调试程序时更难.

例如,如果要在数据库中插入行,则可能需要捕获指示该行已存在的异常,以便您可以执行更新.

try:
    insert(connection, data)
except:
    update(connection, data)

如果指定bare除以外,则还会捕获一个套接字错误,指示数据库服务器已经崩溃.最好只捕获你知道如何处理的异常 – 程序通常在异常点失败而不是继续但是以奇怪的意外方式运行.

您可能希望使用裸外的一种情况:位于您需要始终运行的程序的顶层,如网络服务器.但是,你需要非常小心地记录异常,否则就不可能弄清楚出了什么问题.基本上,程序中最多只能有一个地方可以执行此操作.

所有这一切的必然结果是你的代码永远不应该引发Exception(‘some message’),因为它会强制使用客户端代码,除了:(或者除了异常:这几乎一样糟糕).您应该定义一个特定于您想要发出信号的异常(可能是从一些内置的异常子类继承,如ValueError或TypeError).或者你应该提出一个特定的内置异常.这使您的代码用户可以小心地捕获他们想要处理的异常.

标签:python,exception,pep8
来源: https://codeday.me/bug/20190915/1804888.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有