¿Hay algún problema con tener una lógica de reintento basada en cualquier excepción (y no en SqlException específico)? Supongo que las excepciones resultantes debido a errores de programación se descubrirán eventualmente durante la fase de prueba y las excepciones graves (como SO) de todos modos no serán capturadas por el bloque de captura, por lo que el bloque de excepción genérico para la lógica de reintento puede ser una idea aceptable.
Si no, entonces probablemente su solución de envolver ExecuteReader
seria buena idea Teniendo en cuenta que esto está documentado
comportamiento, también debe prestar atención a otras excepciones que el método ExecuteReader puede generar, por lo que probablemente deba anticipar IOException
y ObjectDisposedException
además de InvalidOperationException
.