Ask yourself why your invalid data is reaching your database?
You should implement strong validation on your inputs to prevent this happening as the constraints are only there as a last resort, not a front line for validating data.
Create validation routines that trap and report back (with a useful message) invalid data only sending valid data to be inserted into your database.
This could be done using PL/SQL stored procedures/packages/functions, a good article on using them for CRUD operations is here:
http://www.devshed.com/c/a/Oracle/Developing-Simple-PL-SQL-Stored-Procedures-for-CRUD-Operations/
Or you could potentially use database triggers for this purpose, though "BEFORE" operation triggers are not as efficient as bulk processing collection data in a PL/SQL validation package.
Hope this helps...