SpliFF
SpliFF

Reputation: 38956

how to modify an exception object in Railo

try {
    // some error
} catch (any e) {
    e.extendedInfo = 'New extended info';
    //throw(e);
    //cfcatch.extendedInfo = 'New extended info';
    rethrow;
}

When I (re)catch this exception the extendedInfo is not displayed. What I want to happen is the raised exception keeps all of its pre-catch properties including the original tagContext and line numbers etc but gets a new value for extendedInfo.

I've tried copying the attributes of e into a new attributeCollection and throwing that with throw(e) or <cfthrow attributeCollection="#e#" /> but then the context is changed and the error displays the wrong line of source code.

While I'm at it is there a way to to drop the topmost stack object so an exception appears to have been thrown from the calling context. ie:

function myRethrow(e) (
   throw(e); // <!-- error is actually throw here BUT ...
)
myRethrow(e); // <-- error should appear to have 'happened' here

Using Railo 3.2

Upvotes: 1

Views: 135

Answers (1)

Sergey Galashyn
Sergey Galashyn

Reputation: 6956

I think you can use throw function like this:

try {

    try {
        // some error
    }
    catch (any e) {
        e.extendedInfo = 'New extended info';
        throw(argumentCollection = e);
    }

}
catch (any e) {
    WriteDump(e);
}

Works for me.

Upvotes: 1

Related Questions