在python中,某些事情的调用者如何知道该事件是否会抛出异常?

时间:2014-06-16 18:20:15

标签: python exception exception-handling

在Java世界中,我们知道异常被分类为checked和runtime,每当抛出一个已检查的异常时,该东西的调用者将被迫以这种或那种方式处理该异常。因此,调用者将充分意识到存在异常并准备/编码以处理该异常的事实。

但是来到Python,因为没有检查异常的概念(我希望这是正确的),某些事情的调用者如何知道该事件是否会引发异常?鉴于“缺乏可以抛出异常的知识”,调用者如何知道它可以处理异常,直到为时已晚?

4 个答案:

答案 0 :(得分:3)

Python中没有经过检查的异常。

  1. 阅读模块文档。
  2. 阅读来源。
  3. 测试期间发现。
  4. 如有必要,请捕获各种异常类型(见下文)。
  5. 例如,如果您需要安全:

    try:
       ...
    except Exception:
       ...
    

    避免使用bare except子句,因为它甚至可以捕获像KeyboardInterrupt这样的东西。

答案 1 :(得分:0)

据我所知,Python(6年)与Python中的throws关键字没有任何相似之处。

答案 2 :(得分:0)

  

某事的调用者如何知道该事件是否会引发异常?

通过阅读该文档的文档。

答案 3 :(得分:0)

Python的设计原则:it's easier to ask forgiveness than permission

  

EAFP       比许可更容易请求宽恕。这种常见的Python编码风格假设存在有效的键或属性   如果假设被证明是假的,则捕获异常。这干净又快   风格的特点是存在许多尝试和除外   声明。该技术与许多人共同的LBYL风格形成鲜明对比   其他语言,如C.

Basics of Unix Philosophy:修复规则

  

修复你所能做的 - 但是当你必须失败时,请尽快失败   尽可能。

两者的本质是使用错误处理,允许您快速找到您的错误,并从长远来看,使用更强大的程序。

实际的教训是学习errors you should look for as you develop,并且只尝试捕获模块中的那些,并且只使用泛型Exception处理作为包装。