It looks like you have a very good handle on this already. I suspect you're doing more than 95% of the SQL programmers out there.
You should find some interesting information here:
- Detecting and Reporting Errors in Stored Procedures - Part 1: SQL Server 2000
- Detecting and Reporting Errors in Stored Procedures - Part 2: SQL Server 2005 TRY-CATCH Blocks*
One [unrelated] suggestion: start using '<>' instead of '!='.
[* SQL Junkies has gone away, so the second article is not available. I will try to get it republished somewhere and update the link.]