【问题标题】:Python Exception Handling : Is there a method to know what type of exceptions my code can possibly throw?Python 异常处理:有没有办法知道我的代码可能抛出什么类型的异常?
【发布时间】:2019-11-05 05:55:43
【问题描述】:

我有一个代码,可以说:

'''

try: 
    somecode()
except Exception as e:
   somelog()

'''

有没有办法找出 somecode() 可以抛出的所有可能的异常,以便我可以按适当的顺序处理它们。

【问题讨论】:

  • 这是防御性编程,即使您尝试也无法预测所有可能出错的可能性。. 剩下的会很多
  • 不,没有。好的文档可以帮助限制“每个 API 合约的预期行为”。无论如何,无论如何,捕捉异常都会(几乎)得到它们......
  • 与python无关的想法,你可能会觉得有用stackoverflow.com/questions/4393197/…
  • 预期异常应记录在案。意外的可能仍然会发生,您是否应该抓住它们值得商榷。

标签: python python-3.x exception


【解决方案1】:

虽然您可能并不总是能够了解可能发生的每个错误,但您可以通过考虑常见情况来做很多事情。此链接是一个很好的入门指南,其中包含示例:

https://www.pythonforbeginners.com/error-handling/exception-handling-in-python1

对于引发您在自己的函数中预测的异常,这是一个很好的入门指南:

https://www.programiz.com/python-programming/user-defined-exception

最后,当您使用内置函数或包时,它们通常会记录它们引发的异常。例如,查看 Python 的内置页面 https://docs.python.org/3/library/functions.html 和 ctrl-f ValueError。许多文档会告诉您它们引发了哪些异常,但除此之外,您可以根据您的实现和使用情况进行预测和猜测。

希望有帮助!

【讨论】:

    【解决方案2】:

    对于单个案例,您可能需要考虑的异常类型并不多。如果您尝试访问文件或访问数据库,则选项很少。最佳实践是跟踪文档。知道异常的名称不会花费太多时间。

    https://docs.python.org/3/tutorial/errors.html

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 2012-03-30
      • 2022-11-07
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 2021-10-07
      • 2021-10-21
      相关资源
      最近更新 更多