This is just propagating a slightly different style of "sweeping the issue under the rug". I THINK the correct behavior is to move the "return;" into the try block and fall through to the "throw" further down in the case of IllegalArgumentException. 

The alternative is to remove the try/catch altogether, but I think that throwing the generic "Exception" with the same message as other cases is more consistent.

I am proposing something a little more disruptive -- possibly catching new errors or catching errors sooner -- but I think that it's the right thing.

Also, the checkConstantValueTypeSafety call should be pulled -- it's a no-op for timestamps (and for most of the other types for which it is incessantly called in this code.

Also, going one step further in the "fix creep", these mutually exclusive neededType tests should be in "else if"s just for readability if not for efficiency.