Sometimes its an error you want to trap, sometimes it's validation (so that you don't end up passing Null to a query or something). As a general rule, each procedure should have error handling, and for button clicks, often validation is a good idea. Otherwise Access goes back up stream to look for an error handling routine. If one isn't found, the default error handler will take over. If one is found but doesn't handle the error, same thing.
You could consider having an error handling procedure in a standard module just to build a message box since it's such a repetitive piece of code. For error trapping, you either have to know all the possible errors that could occur due to a user interacting with a form (and who knows them all?) or try doing the unexpected and raising the error, then trapping for that error number. When it comes to validation, you click the button with "dog" in a control where a number should be and either see what happens, or just trap that and don't allow it. That's validation. For that, it's often more efficient to loop through a set of controls, for example, to ensure none are blank.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.