You could call findById first and only persist if it returns null. Exceptions are meant for a non-expected path. It sounds like you are expecting the row might be there.
I have this
pattern a lot:
findById
if null: insert record
if not null: merge records