model your exception handling in the process, so whenever something wrong happen you will trigger an error event and then model catch error event that will handle exception flow in the process - in my opinion this is recommended so business process covers all scenarios and not only positive flow so to say

enhance your work item handlers to deal with exception and signal events that are awaiting error situations

Both most likely will provide you with same result but option 1 in my opinion is clearer as that is visible directly on the process level and not somewhere in the code.

We're trying to perform some exception handling in our process. What we have is Script Task 1, Use Task1, ScriptTask2, ScriptTask3 (in order) ... in ScriptTask1 i'm setting a process variable (say, someVar) to some value before landing into the UserTask1. I can see the process variable value refelected in the portal screen. In Script Task2, i'm again setting variable to a different value and finally in ScriptTask3 a java.lang.NPE is thrown. What we observe is that the value of the someVar still has the first value which was set in ScriptTask1 and the value set in ScriptTask2 is rolled back (which is a desired behavior on exception). But the problem is that now the instance is stuck at the ScriptTask3. How do I route this instance into an exception flow or an alternate so that some corrective step can be taken either manually or systematically and the instance can be salvaged.