如何在Python中查找可以为特定模块引发的异常?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在Python中查找可以为特定模块引发的异常?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1632字,纯文字阅读大概需要3分钟。
内容图文
![如何在Python中查找可以为特定模块引发的异常?](/upload/InfoBanner/zyjiaocheng/824/962bd4c566be42fb838c6cf311255ff9.jpg)
我想知道标准方式(如果有的话)如何获得模块/函数可以引发的异常.
我们以json为例.
当然我去了Documentation,但我没有找到一种标准化的方法来知道在某些功能(如转储或加载)中可以引发哪些异常.我(乍一看)不清楚是否只捕获TypeError就足够了.
哪些建议可以确保我们能够捕获关于特定模块/功能的所有内容(并且足够)?
解决方法:
我从来没有完全满意Python的异常内容.它在实践中运作良好,这是困扰我的理论. :-)特别是,因为一切都是动态的,即使你知道evil()只引发ZorgError本身并调用spam()引发EggsError,所以最多你从一个邪恶的调用中得到这两个错误(),某人可以修补背后的东西并改变它.
也就是说,有些文档比其他文档更好.例如,如果kill失败,os.kill显然会引发OSError,如果你用两个整数之外的东西调用它,可能会引发TypeError,但是你知道它也会引发OverflowError吗?
>>> os.kill(9999999999999, 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: signed integer is greater than maximum
如果您正在尝试编写合理的防弹代码来执行诸如读取pid文件和??探测以查看进程是否正在运行之类的事情,那么事实证明,如果pid文件中的pid是一个,则必须捕获此OverflowError整数,但超出范围.如果这是在文档中(我通过酷刑测试找到它)会很好.)
简单地捕获所有内容(除了:或者除了Exception之外)通常是不合适的,因为它通常捕获太多(包括例如来自堆栈溢出的RuntimeError).那么你怎么知道要抓到什么?我认为,如果标准库中的叶函数有“我直接提出的例外”属性或文档要求,那可能会很好,但它不存在.
编辑:我在上面的评论中指出,json文档明确提到了ValueError.未明确调出,但在json的自测中发现,是UnicodeDecodeError(一旦你想到它就很明显)和AttributeError(不那么明显).该文档还提到您可以获得OverflowError.当然,如果你使用json.dump,它需要一个写入的流,你也可以获得所有流的错误.这种事情就是为什么“zorg()例外列表直接引发”并不总是非常有用.
内容总结
以上是互联网集市为您收集整理的如何在Python中查找可以为特定模块引发的异常?全部内容,希望文章能够帮你解决如何在Python中查找可以为特定模块引发的异常?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。