If the procedure p2 does not catch and throw the error, then error handling will work in the traditional style, like "on error undo, retutn error" and the error text will not be available in the calling procedure.
I usually use my custom "cancelerror" to cancel the operation/transaction...