Corte de excepciones: ¿se debe esto a un constructor de copia generado?

Acabo de corregir un error muy sutil en nuestro código, causado por cortar una excepción, y ahora quiero asegurarme de que entiendo exactamente lo que estaba sucediendo.

Aquí está nuestra clase de excepción base, una clase derivada y funciones relevantes:

class Exception
{
public:
  // construction
  Exception(int code, const char* format="", ...);
  virtual ~Exception(void);

  <snip - get/set routines and print function>

protected:
private:
  int mCode;                // thrower sets this
  char mMessage[Exception::MessageLen]; // thrower says this FIXME: use String
};

class Derived : public Exception {
public:
  Derived (const char* throwerSays) : Exception(1, throwerSays) {};
};

void innercall {
  <do stuff>
  throw Derived("Bad things happened!");
}

void outercall {
  try {
    innercall();
  }
  catch(Exception& e)
  {
    printf("Exception seen here! %s %d\n", __FILE__, __LINE__);
    throw e;
  }
}

El error fue, por supuesto, que la llamada externa termina lanzando una Excepción, en lugar de una Derivada. Mi error se debió a una mayor cantidad de intentos en la pila de llamadas para detectar el fallo Derivado.

Ahora, solo quiero asegurarme de que lo entiendo. Creo que en la línea 'throw e', se está creando un nuevo objeto Exception, utilizando un constructor de copia predeterminado. ¿Es eso lo que realmente está pasando?

Si es así, ¿puedo bloquear los constructores de copia para los objetos que se lanzarán? Realmente preferiría que esto no volviera a suceder, y nuestro código no tiene motivos para copiar objetos de Excepción (que yo sepa).

Por favor, no hay comentarios sobre el hecho de que tenemos nuestra propia jerarquía de excepciones. Es un poco de diseño antiguo el que estoy trabajando para corregir (estoy progresando bien. Me he deshecho de la clase de cuerdas de cosecha propia y de muchos de los contenedores de cosecha propia).

ACTUALIZACIÓN: Para ser claro, corregí el error (cambiando 'lanzar e' a 'lanzar') antes de hacer la pregunta. Solo estaba buscando confirmación de lo que estaba pasando.

Respuestas a la pregunta(4)

Su respuesta a la pregunta