c# - Lanzando ArgumentNullException en constructor?
arguments (4)
Pondría el cheque en la propiedad que estableces cuando se llama al constructor ... De esa forma se lanzaría la excepción en todos los casos.
Para un constructor con un solo parámetro, ¿está bien arrojar una ArgumentNullException dentro del constructor si el parámetro es nulo / vacío? O, ¿debería arrojarse en el método que realmente utiliza el argumento? Gracias.
Por lo que suena, pasas un parámetro al constructor que la clase debe retener para usarlo en algún otro método más adelante. Si no está utilizando realmente el argumento en el constructor, probablemente debería pensar en mover el argumento para que sea un parámetro del método que realmente lo está usando.
Sí, si es completamente esencial, lanza la excepción. No deberías * lanzar la excepción más tarde.
Recuerde siempre el "Principio fallido" . El concepto es fallar ahora, por lo que no pierde la depuración del tiempo ni experimenta una funcionalidad del sistema inesperada.
Alternativamente, también podría arrojar una ArgumentException para "" y ArgumentNullException para null. En cualquier caso, asegúrese de arrojar un mensaje de excepción válido.
Siempre es un buen artículo de referencia para gestionar excepciones: buenas reglas de gestión de excepciones
Nota al pie sobre lo que dijo Stevest Michelotti (porque soy un gran admirador de CodeContracts)
Contract.Requires<ArgumentNullException>(inputParemeter!= null, "inputparameter cannot be null");
Contract.Requires<ArgumentException>(inputParemeter!= "", "inputparameter cannot be empty string");
alternativamente
Contract.Requires<ArgumentNullException>(!string.IsNullOrEmpty(inputParemeter), "inputparameter cannot be null or empty string");
Tirarlo en el constructor está bien, hay varias clases en el framework .NET que hacen esto. Además, consulte los contratos de código para esto.