20 Stimmen

Implementierung von finally in C++

Ist dies ein guter Weg, um eine Finally-like Verhalten in Standard-C++ zu implementieren? (Ohne spezielle Zeiger)

class Exception : public Exception
    { public: virtual bool isException() { return true; } };

class NoException : public Exception
    { public: bool isException() { return false; } };

Object *myObject = 0;

try
{
  // OBJECT CREATION AND PROCESSING
  try
  {
    myObject = new Object();

    // Do something with myObject.
  }

  // EXCEPTION HANDLING
  catch (Exception &e)
  {
    // When there is an excepion, handle or throw,
    // else NoException will be thrown.
  }

  throw NoException();
}

// CLEAN UP
catch (Exception &e)
{
  delete myObject;

  if (e.isException()) throw e;
}
  1. Keine vom Objekt ausgelöste Ausnahme -> NoException -> Objekt bereinigt
  2. Vom Objekt ausgelöste Ausnahme -> Behandelt -> KeineAusnahme -> Objekt aufgeräumt
  3. Von Objekt ausgelöste Ausnahme -> Ausgelöst -> Ausnahme -> Objekt aufgeräumt -> Ausgelöst

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X