I believe that error handling in both versions (4.4 and 5.x) is exactly the same, if exception is thrown then transaction is rolled back and process remains in the last known wait state. It could be the previous node but it does not have to be as it depends when the last safe state was. Important is that the exception must not be caught so it reaches engine so it can react on it and rollback transaction.
If you see different behavior could you please provide test case that illustrates this?
Thanks for your answer.
Actually a simple process with a Human task followed by a Script task with a java Exception illustrate this