That should be obvious from your SP. Since you are checking if a product with the ID to be inserted already exists, the insert wont be done and thus the SP cannot fail. Everything is just dandy.
if not exists(select * from PRODUCT where ID=@ID)
If you would want the SP to fail in case the ID was already present you could try throwing an exception via
RAISERROR[
^].
Regards,
Manfred