In CoreContainer, zkSys.registerInZk doesn't declare any checked exceptions, so we can narrow the scope to catching only unchecked ones. This might help us notice API or compatibility changes in the future.
In LeaderInitiatedRecoveryThread, client.request declares both SolrServerException and IOException so we still have to handle them in some way. The existing code did not make a distinction between those and RuntimeException, so I made the minimal changes I could. It would have been reasonable to catch (IOException | SolrServerException | RuntimeException e) but I didn't think of that at the time and I'm not sure it really adds much value.