【发布时间】:2017-06-27 05:30:48
【问题描述】:
我正在尝试决定是否应该在我的某些代码中使用异常、断言或边界检查。
该程序包含大量依赖于用户输入的计算。该程序在嵌入式系统上运行。
下面的代码是一个典型的例子。参数 weight_percent_salt 显然不应该是负数,也不应该超过 100。
float Conductivity(const float weight_percent_salt)
{
float sigma_20C = 0.0;
if(weight_percent_salt > 16.2)
{
sigma_20C = 19.4;
}
else
{
sigma_20C = 2.0487 * weight_percent_salt - 0.2352 * pow(weight_percent_salt,2) + 0.0187 * pow(weight_percent_salt,3);
}
return sigma_20C;
}
在这种特殊情况下,我可以将用户输入限制在 0 - 100% 之间并保持代码不变,但其他功能并不直接依赖于用户输入,而是依赖于其他计算的结果。
在这些类型的函数中处理错误输入参数的最佳方法是什么?
【问题讨论】:
标签: c++ exception testing design-by-contract