Hi Tom,
You said that trapping an arbitrary exception is a “fairly expensive mechanism”.
I suppose a better (though maybe not perfectly accurate) wording is that setting up the pl/pgsql execution layer to trap "arbitrary SQL-layer exceptions" is fairly expensive. Even if the user specifies specific errors the error handling mechanism in pl/pgsql is code for generic (arbitrary) errors being given to it.
David J.