gpt4 book ai didi

language-agnostic - 抛出新异常与将消息写回用户(避免异常)

转载 作者:行者123 更新时间:2023-12-04 01:53:13 24 4
gpt4 key购买 nike

如果参数格式不正确或其他原因,我看到很多代码都会引发异常。基本上是“抛出新的......”。

这有什么好处?通过检查参数可以避免异常(例如,如果为空,则将消息写回网页/winform)。当异常代价高昂时,为什么不使用这种方法?

谢谢

最佳答案

这里有几点值得说明:

  • 首先,您认为异常代价高昂的假设通常是不正确的 - 异常(exception)是,嗯......异常(exception)。它们的发生频率不应足以对程序性能产生任何有意义的影响。而且,如果您看到足够多的异常表明性能是一个问题,那么您就有更大的鱼可炒了。
  • 其次,一个编写良好的类、函数或模块程序应该能够稍微优雅地检测和处理无效输入。 它可以帮助代码的维护者和调试者在尽可能接近问题的引入位置找到问题。如果不检查参数,它们通常会导致代码稍后出现故障 - 与实际错误相去甚远。调试此类问题可能非常痛苦。
  • 第三,您假设所有代码都知道执行它的上下文。 一个方法可能在框架或库中很深,并且不知道它是否在 Web 应用程序、控制台应用程序、NT 服务等中运行。此外,在整个过程中使用逻辑来显示有关无效参数的信息是一种糟糕的做法。你的代码主体——这个责任应该集中和控制——否则你的 UI 很容易变成一团乱七八糟的错误,散布在实际的演示内容中。
  • 最后,异常允许程序有时处理问题并从问题中恢复,而不是将其暴露给用户。 不要通过在发生错误时立即显示错误来削弱这种能力。现在,当然,大多数无效参数通常是编程缺陷的症状(而不是环境或配置问题) - 因此在大多数情况下它们无法处理。但是,话又说回来,有时它们是可以处理的。
  • 关于language-agnostic - 抛出新异常与将消息写回用户(避免异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2136081/

    24 4 0