I almost never use custom error codes. The reason is because there are already so many error codes built into LabVIEW and those often meet the needs of my custom errors, sometimes with some more source string information. I have a utility that allows me to search existing error codes for free text and so I usually find an error code that is close enough.
Having difficulty opening a reference to a device? 40 is Cannot Open Device.
Reference goes bad? 23 is Input handle is invalid, 36 is Invalid device refnum.
Once I find the error code that I want to use I'll drop an error ring, choose Custom Error Code, then type in the code I want, along with additional descriptions. This node also accepts things like %s and %d for additional inputs.
Oh and I agree with everyone else error information to me isn't about how the test ran, it is about major issues that should prevent other actions from taking place. In a pinch it can be used for something like stopping a loop, or continuing a loop on a retry.