gpt4 book ai didi

c++ - C++中被调用函数的异常处理

转载 作者:行者123 更新时间:2023-11-27 23:24:11 25 4
gpt4 key购买 nike

如果我必须调用一个特定的函数,其中发生除零。我们不能修改被调用函数中的任何内容。防止的唯一方法是在调用函数中进行一些修改。怎么做?

例如:

//calling function

int func(5,1);

//called function

int func(int x,int y)
{
y--;
return(x/y); // here divide by zero will occur, but we cannot do any thing in
// called function
}

如何让我们的应用程序保持运行而不是这个异常?

最佳答案

有两种处理方式:

强制参数检查:

在调用代码中你应该检查除数。

if(y != 0)
func(x,y);
else
//Some log or error handling

抛出异常:

整数除以零不是标准的 C++ 异常。所以你不能依赖隐式抛出的异常。特定的编译器可能会将被零除映射到某种异常(您需要为此检查编译器文档),如果是这样,您可以捕获该特定异常。但是,请注意,这不是可移植的行为,并不适用于所有编译器。

鉴于以上所述,您可以做的最好的事情就是自己检查错误条件(除数等于零)并明确抛出类型为 std::runtime_error 的异常。


无论哪种情况,您的代码都应该适本地记录行为,在第一种情况下,您的代码应该记录有效的支持值,而在第二种情况下,它应该指定可以抛出哪些异常。

关于c++ - C++中被调用函数的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10578136/

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