我想构建一个类,其中的函数可能会抛出我想在使用时捕获的异常。我从标准异常类继承 my_exception 。我实现了 what() 函数,以便它返回一个存储在私有字符串变量中的字符串
我认为将异常定义为嵌套类会更好,就像在 iostream 库中使用 ios_base::failure 完成的方式一样。
我不太确定的是,我应该在哪里以及如何定义 my_excpetion 的对象。我希望我能看到 iostream 函数的内部代码,看看它们是如何做到的。我想过几个选择:
对于每个异常原因,我可以定义一个 my_exception 的静态实例,并使用一个构造函数获取一个字符串并将其保存到我的私有字符串指针中。
对于每个异常原因,我可以定义另一个从 my_exception 继承的类,并将 what 作为返回常量字符串的函数(原因)实现。我可以持有每个异常子类的实例,或者抛出类型。顺便说一句,我们通常什么时候抛出类型而不是实例?
我想这是错误的:每次我想抛出异常时,都要使用获取字符串的构造函数创建一个新的 my_exception 。这是在 Java 中完成的,但据我所知,这在 C++ 中会出现问题,因为应该在某处删除异常。对?
我认为第一个是正确的,是吗?有更多的标准选项吗?
非常感谢你!