Agregue un mensaje personalizado a la excepción lanzada mientras mantiene el seguimiento de la pila en Java

Tengo una pequeña pieza de código que se ejecuta a través de algunas transacciones para su procesamiento. Cada transacción está marcada con un número de transacción, que es generado por un programa externo y no está necesariamente secuenciado. Cuando detecto una excepción en el código de procesamiento, se la entrego a la clase principal y la registro para revisarla más tarde. Me gustaría agregar el número de transacción a esta Excepción lanzada. ¿Es posible hacer esto mientras se mantiene el seguimiento de pila correcto?

Por ejemplo:

public static void main(String[] args) {
    try{
        processMessage();
    }catch(Exception E){
        E.printStackTrace();
    }

}

private static void processMessage() throws Exception{
    String transNbr = "";
    try{
        transNbr = "2345";
        throw new Exception();
    }catch(Exception E){
        if(!transNbr.equals("")){
            //stack trace originates from here, not from actual exception
            throw new Exception("transction: " + transNbr); 
        }else{
            //stack trace gets passed correctly but no custom message available
            throw E;
        }
    }
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta