Czy istnieje jakiś problem z logiką ponawiania prób na podstawie dowolnego wyjątku (a nie określonego SqlException)? Zakładam, że wyjątki wynikające z błędów programowania zostaną ostatecznie wykryte podczas fazy testowania, a poważne (takie jak SO) wyjątki i tak nie zostaną przechwycone przez blok catch, więc ogólny blok wyjątków dla logiki ponawiania może być akceptowalnym pomysłem.
Jeśli nie, to prawdopodobnie Twoje rozwiązanie polegające na zawijaniu ExecuteReader
byłby dobrym pomysłem. Biorąc pod uwagę, że jest to udokumentowane
zachowanie, musisz również zwrócić uwagę na inne wyjątki, które może generować metoda ExecuteReader - więc prawdopodobnie będziesz musiał przewidzieć IOException
i ObjectDisposedException
oprócz InvalidOperationException
.