In my opinion, this is not a product that one should try to 'learn' via forum discussions. You really need a local mentor that can look at things with you. There is just too much to learn. But I'll try anyway. (I have .net background too, so I sorta know where you are coming from.)
QUESTION: Does your job have a RunTime tab setting specified? This is typically where you tell the scheduler what return code level is to be considered "OK" vs "NOT OK". If you do not have one, then Automic will assume that your return code must be zero otherwise it will automatically block the workflow from continuing.
workflow post-condition might be your best solution, or it might not. This product is very flexible. Execution order;
1. workflow pre-condition
2. job pre-process script
3. job process script (typically where you run your process)
4. job post-process script
5. workflow post-condition
The workflow conditions are limited in what they can do, but they can also do certain things that you can not do with the scripting language. the three process script phases are more flexible because the scripting language is so rich. There is a 663 page scripting manual in pdf form (it has lots of screen images) or you can use PF1 to find what you need.
QUESTION: So where is your code stored? Is it stored in the job process script, or is it in an external file that is invoked from the job process script?
Hopefully you can just add the Automic script command ":EXIT 1" at the right place to set a non-zero return code and trip the RunTime functionality of blocking the workflow. This will be easier to do if your code is in the job process script and not stored externally.