launchctl can fail with 0 exit code on start / stop actions with error messages like:
Operation not permitted
No such file or directory
Could not find specified service
service already loaded
For No such file or directory add a check to ensure the file exists. For the others - parse the stderr and add proper error handling.