Interesting find. Looking at class usage, currently FacetingAccumulator contains/constructs FieldFacetAccumulator and both classes' constructors are throws IOException - so not sure re: changing only the latter over to throws SolrException then since SolrException is not an IOException (i think).
Considering the overall class usage and calling chains, might the hasDocValues() check be relocated to somewhere higher up? From a cursory look AnalyticsContentHandler.endElement and AnalyticsRequestFactory.(parse|makeFieldFacet|setFieldFacetParam) construct FieldFacetRequest objects and perhaps the hasDocValues check could happen there i.e. catch the invalid input/bad request when considering request parameters and then within the lower level accumulator object the hasDocValues check goes away and no SolrException need be thrown by the FieldFacetAccumulator.