As a best practice, you should always "catch what you can" before you get to the database. Though it may seem as if a round-trip isn't a big deal, they are expensive. Objects have to be created on the server, application pool resources managed, and so much more. Do all the validation you can, though it's tedious, before you get to the database.
The reason you rely on the database to throw exceptions is to ensure its integrity via other forms of access (e.g. import scripts), not to leverage it for your application (which is capable of catching and handling them gracefully).
The final benefit of building the get
and set
operations is that you can fully encapsulate these bounds checks so that you only have to write the code once, you're going in the right direction!