我应该返回一个值还是抛出一个异常…
Should I return a value or throw an exception....?
我正在编写一个模板T
的泛型类。
它有一个成员函数
T findElement (T data1)
{
Tree<T> *tree=search (data1,TreeTop);
if (tree==NULL)
cout<<"n Element Not FOund n "';
else
// Usefult Part Of Code Which Returns A Data Of Type T (Generic)
}
现在如果第一个条件是true
,我应该抛出一个异常吗?
它会篡改函数的返回类型吗?关于异常是如何工作的一点解释将会有所帮助。
是否抛出异常是一个主观的问题,这取决于你的情况和编码风格。
一般来说,大多数人会说只在不寻常的情况下抛出异常-所以如果您期望许多搜索搜索没有返回结果,那么返回一个特殊或特殊形式的元素可能是一个好主意,如果这是在正常情况下很少或从不发生的事情,那么大多数开发人员会认为异常是合适的。
关于返回类型:当函数抛出时,没有返回类型,因为函数永远不会返回,相反,程序从调用上下文中catch的第一行继续执行。
有很多选择。选择哪一个完全取决于上下文。
- 返回
std::optional<T>
(或boost::optional<T>
)时,没有找到任何可以正常程序流的一部分。 - 抛出一个异常,如果没有找到任何指示异常情况引起的程序的环境,这既不是你的代码的错误,也不是坏输入的结果(例如,如果另一个线程已经清空容器在只是错误的时刻或如果元素没有放在那里,由于内存耗尽)。
-
assert(false);
,终止程序。当没有发现任何东西只意味着你自己的代码是错误的时候,这样做,所以快速终止是可能发生的最好的事情。
相关文章:
- 我在c++代码中生成了一个运行时#3异常
- 当我尝试使用它时,Scanf 会抛出一个随机异常(scanf_s 也是如此)
- 如何构建一个异常类来报告C++中的哪些文件和行号?
- 我正在尝试创建一个使用 c++ 中的参数包构造函数的异常类
- 带有Cuda的LibTorch(C++)引发了一个异常
- memcpy() 在一个类中被调用以复制到另一个类变量中后会引发异常
- 如果一个对象是在本地创建的,并在C++中作为异常抛出,那么本地对象如何在其范围之外有效,即在 catch 块中?
- 异常对象的最后一个潜在销毁点
- 声明一个额外的变量会导致运行时出现异常
- C++:为什么当我想输入"q"退出时,这会给我一个异常抛出错误?
- 使用一个微不足道的异常类有什么意义
- 我可以让虚拟抽象类抛出一个异常吗?
- 我想捕获一个异常,并将其绑定到我自己的异常中,然后向上抛出
- 我可以有一个异常的静态全局实例吗?
- 在catch块中抛出一个异常会导致两个异常在飞行中吗
- 我使用 POCO 解析 JSON.它抛出一个异常:JSON 异常:错误字符.如何处理汉字
- 我应该返回一个值还是抛出一个异常…
- 当一个异常对象被销毁时(它可以被控制吗)
- 你能把一个异常继承层次结构包装到另一个吗?——或者,另一种干净的处理方式
- 为什么空指针解引用不是一个异常