gpt4 book ai didi

syntax - 为什么我们需要异常处理?

转载 作者:行者123 更新时间:2023-12-03 22:33:46 27 4
gpt4 key购买 nike

我可以检查输入,如果它是来自用户的无效输入,我可以使用一个简单的“如果条件”打印“输入无效,请重新输入”(以防输入无效)。

这种“如果有可能发生故障,使用 if 条件验证它,然后在遇到故障时指定正确的行为......”的方法对我来说似乎已经足够了。

如果我基本上可以用这种方法覆盖任何类型的故障(除以零等),为什么我需要整个异常处理机制(异常类和对象,检查和未检查等)?

最佳答案

假设您有 func1调用func2有一些输入。

现在,假设 func2由于某种原因失败。

您的建议是处理 func2 内的故障。 , 然后返回 func1 .

怎么会func1 “知道”func2 中发生了什么错误(如果有)以及如何从那一点开始?

想到的第一个解决方案是 func2 的错误代码。将返回,通常,零值将表示“OK”,而其他每个(非零)值将表示已发生的特定错误。

这种机制的问题在于它限制了您添加/处理新错误代码的灵 active 。

使用异常机制,你有一个通用的 Exception对象,它可以扩展到任何特定类型的异常。在某种程度上,它类似于错误代码,但它可以包含更多信息(例如,错误消息字符串)。

当然,您仍然可以争论,“好吧,那么 try/catch 是什么?为什么不简单地返回这个对象呢?”。

幸运的是,这个问题已经在这里得到了非常详细的回答:

In C++ what are the benefits of using exceptions and try / catch instead of just returning an error code?

一般来说,异常与错误代码相比有两个主要优点,两者都是正确编码的不同方面:

  • 对于异常,程序员必须要么处理它,要么“向上”抛出它,而对于错误代码,程序员可能会错误地忽略它。
  • 使用异常机制,您可以编写更“干净”的代码并让所有内容“自动处理”,而错误代码则必须实现“乏味”switch/case ,可能在“调用堆栈上”的每个函数中。
  • 关于syntax - 为什么我们需要异常处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21728173/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com