I am in a in-path. I wrote a class that handles exceptions,
namespace abc{
    class Exception{...}; // This is my very large Exception class
}

The way I'd like to use this class is by creating a smart pointer to it in 
each newly created class, i.e.
namespace abc{
    class m_class0000001{
        private:
        std::shared_ptr<abc::Exception> apex;
        public:
        m_class(){apex.reset(new abc::Exception());}
        m_method(){
            apex->setException(...);
            throw apex;
          }
    };
}
auto apex = std::make_shared<abc::Exception>();
int main() {
    try {
        auto obj = std::make_shared<abc::m_class0000001>();
        obj->m_method();
    } catch(std::shared_ptr<abc::Exception>& e) {
        e->DisplaySomething();
    }
    return 0;
}
But this can be very expensive, since this possibly-very-large class will be 
created in thousands of classes.
On the other hand, I could create the object when or where the exception 
occurs, like this:
namespace abc{
    class m_class0000001{
        private:
        ...
        public:
        m_class(){}
        m_method(){
            ... /* I don't even know if this is possible */
                    auto obj = std::make_shared<abc::Exception>();
            apex->setException(...);
            throw apex;
          }
    };
}
This creates another problem, what if the exception is std::mem_alloc, I 
would ran out of memory, thus I wouldn't be able to create another object.

I know, I know, this is not a C++ question, but, as I said, I am in a 
in-path, I don't know what to do in this case.
Any help would be most appreciated. 


------------------------------------------------------------------------------
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to