PropertyEditors within OpenMRS usually try to get an OpenmrsObject first via its id and if not found by its uuid.
looking like this:
ProgramWorkflowStateEditor tries to get the object twice via its uuid.
If nothing is found the first time, this will not change.
Furthermore, the catch block will never be reached since getByUuid() just returns null if nothing is found. The exception in the try block is normally thrown by Integer.valueOf() if the text is a uuid and not a number.