There should be an "after servererror" trigger on the database and it is also committing in it.
use the following query to find that trigger name.
select owner, trigger_name
where trigger_type = 'AFTER EVENT';
What you can do is, either drop that trigger or you can make it as an Autonomus Transaction.
For all this you should
have the required previliges or a DBA role assigned.