Java error: New exception is thrown in catch block, original stack trace may be lost

user613114 picture user613114 · Jun 21, 2011 · Viewed 16.3k times · Source
try {
    // code which throws exception.
} catch (SQLException sqlex) {
    logger.error("Custom message", sqlex);
    **throw new CustomApplicationException("Custom message", sqlex);**
}

In the above example, on the bold line, I am getting PMD error as "New exception is thrown in catch block, original stack trace may be lost". I know this question has been asked many times also there are many online references available for the same. I have tried all the ways possible. But still I am not able to remove this PMD error. Please let me know whats wrong in this code slice. Thanks in advance!

Answer

Stephen C picture Stephen C · Jun 21, 2011

I don't think there's anything wrong with that code.

But I also, don't think that PMD will / should give that error for that code. IIRC, you get that error with something like this:

try {
    // code which throws exception.
} catch (SQLException sqlex) {
    throw new CustomApplicationException("Custom message");  // no cause!
}

It is possible that you have an old version of PMD or that someone has been "improving" the PMD rules that you are using.