The trouble is that dml driver methods (insert, update, select) are not guaranteed to return the same exception class for various db problems and coding style issues. The recommended practice is to catch dml_exception only.
when two indexes are created in the same sentence and initials are the same (contenthash, contextid)
This introduces some problems in Oracle but... better to keep the rest working.