Considering that all other methods in the API of this class throw an EInvalidData in case of errors, I think changing to RuntimeException for these particular methods breaks symmetry and consistency. Also, catching the EInvalidData that kas() or get***Val might have thrown seems unnecessary since they allegedly identified the reason to throw the exception and nicely packaged it in an EInvalidData object.