All the methods on SolrClient are declared as throwing SolrServerException (thrown if there's an error somewhere on the server), and IOException (thrown if there's a communication error), except for the QueryRequest methods. These swallow up IOException and repackage them in a SolrServerException.
I think these are useful distinctions to make (you might want to retry on an IOException, but not on a SolrServerException), and we should make the query methods fall in line with the others.
I'm not sure if this should go into 5.x as well as trunk, as it's a backwards-breaking change. I'm leaning towards yes, as it's a sufficiently useful API change that it's worth the break, but I'm not going to insist on it.