Estaba cavando en MSDN y encontré this article que tenía un consejo interesante: No tiene miembros públicos que pueden lanzar o no lanzar excepciones basadas en alguna opción.Lanzar/no-lanzar una excepción basada en un parámetro: ¿por qué no es una buena idea?
Por ejemplo:
Uri ParseUri(string uriValue, bool throwOnError)
Ahora, por supuesto que puedo ver que en el 99% de los casos esto sería horrible, pero se justifica su uso ocasional?
Un caso que he visto que se utiliza es con un parámetro "AllowEmpty" al acceder a los datos en la base de datos o un archivo de configuración. Por ejemplo:
object LoadConfigSetting(string key, bool allowEmpty);
En este caso, la alternativa sería devolver nulo. Pero entonces el código de llamada estaría lleno de verificación de referencias nulas. (Y el método también excluiría la posibilidad de permitir realmente nulo como un valor específicamente configurable, si así lo desea).
¿Cuáles son sus pensamientos? ¿Por qué sería esto un gran problema?
Creo que han entendido mal el scen ario. Tenemos la opción de arrojar una excepción (que detendrá el programa o lo que sea), o no lanzar una excepción (es decir, devolver nulo o no hacer nada). En ninguno de los casos se lanzan excepciones y luego son atrapadas. – cbp