Hinzufügen einer benutzerdefinierten Nachricht, um eine Ausnahme auszulösen, während der Stack-Trace in Java beibehalten wird

Ich habe ein kleines Stück Code, das einige Transaktionen zur Verarbeitung durchläuft. Jede Transaktion ist mit einer Transaktionsnummer gekennzeichnet, die von einem externen Programm generiert und nicht unbedingt sequenziert wird. Wenn ich im Verarbeitungscode eine Ausnahme feststelle, stelle ich sie der Hauptklasse zur Verfügung und protokolliere sie zur späteren Überprüfung. Ich möchte die Transaktionsnummer zu dieser ausgelösten Ausnahme hinzufügen. Ist es möglich, dies zu tun, während der richtige Stack-Trace beibehalten wird?

Zum Beispiel:

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;
        }
    }
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage