HI Ravi ,
By throwing errors in XPDL , you would always get them in your back ground tasks only, so the document would get lock anyways.
Why cant you make a validation script or make it mandatory for approver at custom master data level itself , so that you will always have a approver.
Or
You can write a pre phase change script and throw error by checking same ( this shall work ppls give a try).
Or you can cancel the workflow in your prescript and then move the phase backward by Cancelscript and populate the description of the project or any custom extension with the error .
Follow any approach which suits you good.
Thanks
Uday