Rob,
Look to how Fox handles errors, it uses numbers to represent the error. Your BusObj can return values indicating success ro failure and can also either directly return the error number or can provide a LastError method which could be called to get the reason for a failure.