So we have a few choices:
- create a new PDataType method that checks precision and scale - maybe overload isCoercibleTo with these args - and call that here before coerceBytes.
- change isCoercibleTo to return an enum (maybe a SQLExceptionCode) that identifies a particular error or null if ok and throw here based on that.
- have coerceBytes throw different exceptions and the caller can catch and rethrow to add state like column name.
For now, though, let's keep the type system and schema stuff independent.