As stated in the documentation: If a before_add callback throws an exception, the object does not get added to the collection
This way to prevent that save is very “ugly”.
It would be better to keep the standard of the other callback (like before_create): if it returns false, not saved.