What Craig was suggesting (and obviously he can jump in) is to abandon the idea of output parameters, and use a general try...catch block , which gives you a repeatable approach towards capturing and reporting on errors. It's not that output parameters for error codes don't work - it's just that structured error/exception handling is a better approach. It will mean some re-work on your code and will probably take a bit of time, but in the long run it's worth it.