La variable ErrorString se parece sospechosamente a una variable de código de error. La práctica recomendada es usar excepciones para pasar información de error directamente, cuando sea necesario, en lugar de almacenar cosas en códigos de error.
Está haciendo efectivamente lo mismo con su ErrorString como lo haría si solo deja que la persona que llama capte la excepción: eliminando la responsabilidad de responder a un error del método en sí. Este es un buen objetivo para tener. Pero el uso de una cadena de error no le gana nada sobre el uso de una excepción. De hecho, pierdes información de esta manera. Existe una cantidad de tipos de errores que pueden ocurrir y muchos tienen excepciones especiales asociadas a ellos, con sus propias propiedades especiales para contener información contextual sobre el error. Al guardar el mensaje en una cadena, está perdiendo esta información.
De modo que, a menos que su objetivo sea específicamente ocultar el tipo de error que está ocurriendo en la persona que llama, solo puede ganar dejando pasar la excepción.
Otra cosa a considerar es si este es realmente un escenario de error. Si es así, es muy poco probable que a su método de llamada le importe en absoluto cuál es el valor de retorno. En ese caso, no tiene nada de qué preocuparse simplemente dejando que la excepción se ejecute y no devuelva nada. Si NO es realmente un escenario de error, y la persona que llama solo va a continuar y hacer otra cosa, bueno, eso es para que la persona que llama lo decida, ¿no? Todavía no hay mucho beneficio que obtener al devolver una cadena de error y una DataTable ficticia o un nulo, antes de arrojar la excepción con toda su información de falla contextual.
"Así que cuando tengo métodos con valores de retorno no uso el bloque try-catch, que es una mala práctica". ¿dice quién? La mayoría de los métodos devuelven valores sin estar envueltos en bloques de prueba. –
¡Golpeado por 20 segundos! De hecho, es lo que iba a decir; si hay una excepción: A MENOS QUE lo espere y pueda hacer algo útil al respecto, deje que le llame la atención a la persona que llama. –
La deglución de excepciones es el verdadero problema aquí. –