added more exception types to prevent unnecessary rollbacks