【问题标题】:How to find what exceptions might be raised如何查找可能引发的异常
【发布时间】:2014-07-07 19:05:24
【问题描述】:

我正在尝试找到找出我的 python 代码可能引发哪些异常的最佳方法,你们使用的最佳方法是什么?

到目前为止,我可以:

  1. 在线文档中某处会这样说(很少这样做。)
  2. 抓取 .py 文件以获取 raise 语句...

必须有更好的方法来获取这些信息!

这个问题之前(6年前)被问过,但他们没有得到任何答案。

一般的共识似乎是,只捕获你认为需要捕获的异常,但我只知道我可能需要捕获哪些异常,因为我知道首先可能会抛出哪些异常......所以我可以'不接受这个作为答案。如果您的代码将引发异常......当然应该有一些东西让您的代码的用户知道这些异常是什么。

非常感谢你们能给我的任何建议!

【问题讨论】:

  • 您创建单元测试并阅读文档。
  • 您链接到的问题已经为您提供了答案,您已经在选项#1 中提到了这一点。文档是了解函数可能引发哪些异常的唯一方法。您无需知道可能会抛出哪些异常即可知道要捕获什么;您需要知道 API claims 可能会引发哪些异常,这就是您在文档中获得的内容。

标签: python


【解决方案1】:

有一种方法可以捕获所有异常,除了这通常不受欢迎。找出答案的最好方法是为您的程序编写一些测试。每个程序都会根据它的行为抛出不同的异常,我相信你已经知道了。所以只是测试,测试,再测试一些。

【讨论】:

    【解决方案2】:

    答案不仅在您调用的函数中,而且在您编写的代码中。

    如果你的代码总是发送有效参数,它永远不会引发异常,因此没有什么可捕获的。

    但是,您的代码可能会完全混乱,甚至会导致原始开发人员未预料到的异常。例如发送自定义类或输入类型。

    我的建议是,除非您打算触发它们,否则很少需要捕获异常。

    在这方面,你的例子非常相关:

    如果您对字符串进行硬编码,re.compile() 将永远不会失败...工作 完毕 !但是,如果您发送动态正则表达式,(以编程方式生成或 从用户输入中收集)然后您的代码将不得不处理 不正确的正则表达式和进程相关的异常。

    【讨论】:

      猜你喜欢
      • 2018-10-10
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 2019-06-30
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多