Well, this is a bit confused... ClearError when there is no error? Should not be there warning message and then ClearError in case of failure?
As for abort/not abort, for some time I am thinking about some form of option that would abort SQL app in this and other cases, well, basically, after any unsuccesful unrecovered (by rollback) DML command. Checking for return code after each command is tedious (I usually just call OkCommit at the end of processing and rarely check the result).