代码之家  ›  专栏  ›  技术社区  ›  jyoungdev Thilo

这些规则是否完全定义了何时抛出异常?

  •  0
  • jyoungdev Thilo  · 技术社区  · 14 年前
    1. 如果一个方法不能做到它所说的,它就会做到(例如 SendEmail 未能发送电子邮件),它应引发异常。我在博客上对此进行了深入探讨(可选阅读): Do your work, or throw an exception - example . 这一想法似乎已经成为惯例,尽管我在其他地方没有发现这种说法。”例外情况适用于例外情况”是一个不同的准则,要求附加一个准则“不要将例外情况用于正常流量控制”,并要求讨论什么是“例外”“执行您的工作或抛出异常”与方法的责任一样明确(应该已经明确)。
    2. 所有方法,包括“尝试”方法(例如。 TrySendEmail 其他 应用程序的特性,而不仅仅是正在尝试的功能,例如ramchipeexplodexception。也就是说,即使“TrySendEmail”在技术上实现了名称所指示的功能(它) 尝试
    3. “尝试”方法只能在特殊情况下使用。

    这些是吗

    3 回复  |  直到 14 年前
        1
  •  1
  •   user180326    14 年前

    TryXXX不应该抛出异常,除非您违反了设计合同。例如,如果传入一个空指针作为电子邮件的文本,TrySendMail()可能会抛出。 TryLogin

    “做你的工作或扔”是一个很好的出发点,但我不会把它作为一个教条。如果你要求的话,我可以接受一个返回-1的集合 IndexOf

    GetHashCode 我假设不会调用的函数,我让它抛出。

        2
  •  1
  •   supercat    13 年前

        3
  •  0
  •   Michael Borgwardt    14 年前

    在我看来,你不应该太纠结于“例外”这个名字,以及什么是和不是例外情况。

    异常只是另一个流控制语句,它允许控制流以快捷方式向上调用堆栈。