gpt4 book ai didi

c# - "bubble up the call stack"是什么意思?

转载 作者:行者123 更新时间:2023-12-04 10:19:41 26 4
gpt4 key购买 nike

我在 Pluralsight 网站上看过一个关于异常处理的教程。讲师说

Error handling using error code we need to add if statements or switch statements to check the return codes. An error doesn't bubble up the call stack to higher-level code.

我没看懂这句话(error doesn't bubble up the call stack to higher-level code)。

最佳答案

这意味着除非调用者明确处理,否则函数返回的错误代码不会触发任何内容。

考虑以下定义函数的伪代码:

 int f ()
{
...
if (/* some condition that indicates an error */) {
return 1;
}
else {
return 0;
}
}

如果您现在简单地调用函数 f 并且发生错误,除非您明确检查返回值是否指示错误,否则什么也不会发生。根据错误的性质,程序可能会在错误状态下继续运行。

此外,调用该函数的代码的任何调用者都不会收到该错误的通知,除非该错误已明确返回给他们。这就是“冒泡”的意思。为了说明这一点,考虑另一个调用第一个函数而不检查错误的函数:

int g ()
{
...
f();
...
}

现在任何调用 g 的调用者也不会得到任何 f 失败的指示。如果错误不影响 g 所做的计算,也不影响整个程序的状态,那就可以了。但是,如果丢失的处理是由于程序员的错误(或懒惰)造成的,并且确实损害了 g 的结果(以及调用堆栈或整个程序中可能高于它的任何内容),那么没有人会得到通知。

除了异常(exception),情况正好相反。除非明确处理它们,否则它们会从一个调用者传递到另一个调用者,即在调用堆栈中冒泡——想想水中的气泡,它们会冒泡。

关于c# - "bubble up the call stack"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60916387/

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