Why not wrap the whole operation in a single transaction, which will roll back if anything goes wrong?
What you outline is certainly possible, but it has to count as advanced. If you don't do it right, there are many things that can go wrong. What is there is a failure during you roll-your-own rollback? This is something you need to take in account.
The built-in mechanism in SQL Server is tested and tried. There is all reason to rely on it.