Thread: Class destructor and throw

  1. #1

    Class destructor and throw

    I have a small snippet of code I am using for a test purpose.

        CSomeClass Test;
        // output some stuff here
        throw "error";
        return 1;
    catch(char * error)
        // explain error
    return 0;
    While running some tests I noticed that my class's destructor is being called before the //output some stuff here is even being executed and is NOT being called at the end of the application, is this normal in a try/catch situation?

  2. #2
    pronounced 'fib' FillYourBrain's Avatar
    Join Date
    Aug 2002
    before the output some stuff here? I can imagine it happening before the catch because it's out of scope but not before the output some stuff here
    "You are stupid! You are stupid! Oh, and don't forget, you are STUPID!" - Dexter

  3. #3
    Confused Magos's Avatar
    Join Date
    Sep 2001
    Are you sure you didn't mix up the Constructor and the Destructor .

    Give a man a fish and you feed him for a day.
    Teach a man to fish and you feed him for a lifetime.

  4. #4
    Registered User moi's Avatar
    Join Date
    Jul 2002
    i assume you're printing informative messages to stdout and or stderr, are you remembering to flush them both?
    hello, internet!

  5. #5
    Skunkmeister Stoned_Coder's Avatar
    Join Date
    Aug 2001
    any objects local to the function will have their destructors called as soon as the throw statement executes.This is normal behaviour for a throw. The c++ standard garantees that local objects get their destructor called in event of an exception.
    Free the weed!! Class B to class C is not good enough!!
    And the FAQ is here :-

Popular pages Recent additions subscribe to a feed