Me preguntaba qué tipo de excepción debería arrojarse para los datos faltantes. Por ejemplo, si un nodo xml no contiene datos. Sería fácil "lanzar nueva excepción (...)" pero esto no es recomendable. Otra opción sería crear una nueva clase de excepción como MissingDataException o InvalidDataException, pero ¿no hay una clase de excepción incorporada para este caso?Excepción de datos faltantes
Respuesta
Como regla general, compruebe las excepciones de .NET framework existentes para una excepción adecuada para lanzar antes de derivar la suya. Para responder a su pregunta directamente, no hay ninguna excepción de "datos faltantes" actualmente disponible para lanzar, pero eso no significa que no haya excepciones adecuadas para cubrir su situación.
En su caso, el humilde InvalidOperationException
puede ser adecuado; esta excepción se produce cuando se llama a un método en un objeto, pero el estado del objeto no es apropiado para la operación. Ejemplos de esto incluyen métodos de llamada en una secuencia cerrada y un enumerador que ha pasado el final de la colección. Si los datos XML son el estado interno de un objeto y una llamada a un método ha descubierto los datos incorrectos, InvalidOperationException
es un buen candidato.
Si está pasando sus datos XML a un método, un ArgumentException
, o uno de sus derivados puede ser una opción adecuada. Hay una pequeña familia de estas excepciones, todas indicando que un argumento pasado a un método no es el esperado.
Solo querrá crear una excepción personalizada cuando desee que las circunstancias excepcionales se manejen de forma diferente a otras excepciones. Si elige crear su propia excepción, asegúrese de derivarla de una excepción superior a Exception
, de modo que la naturaleza de la excepción esté implícita en la clase base.
+1 Acepto 100 por ciento, use lo que el sistema ofrece y solo entonces si no puede encontrar algo que funcione, cree excepciones personalizadas. –
Un posible candidato también sería 'ValidationException' –
Puede usar System.Xml.XmlException
.
Editar: Incluso si System.Xml.XmlException
podrían caber, creo que debe definir su propia excepción, ya que sería más preciso, y se podría describir qué tipo de datos que falta: un id, una fecha, etc.
System.Xml.XmlException es utilizado por el tiempo de ejecución para indicar un error al leer un documento XML, específicamente cuando el XML no tiene el formato correcto (por ejemplo, etiqueta no cerrada, elemento raíz faltante). Incluso incluye números de línea y personaje. No me parece especialmente adecuado. –
Si su XML debe tener datos en un nodo, y no tiene ninguno, IMO el XML no tiene el formato correcto, por lo que puede mostrar en qué línea (incluso qué número de char si lo desea). Creo que esto encaja, incluso si definir su propia excepción sería mejor. –
No llame a "lanzar nueva excepción", porque no sabe cómo manejar la excepción.
Defina su propia excepción. Sea más específico, como XMLDataMissingException. Luego puede dar un mensaje memorable al usuario o iniciar sesión.
Establezca el mensaje con los detalles. –
throw new Exception ("mi mensaje"); (u otra Excepción incorporada) suele ser el enfoque correcto. La alternativa es una explosión de clases de excepción que solo pueden usarse una vez.
Si se justifican nuevas excepciones, se deben crear en el contexto del dominio, no en el problema.
Como regla general, debe lanzar excepciones en circunstancias excepcionales. Si los datos en cuestión afectan negativamente el estado o el comportamiento del objeto, genere una excepción personalizada. Un enfoque alternativo podría incluir algún tipo de validador que active eventos que su cliente maneje con elegancia, por ejemplo, informe el error al usuario final o inserte valores predeterminados.
Tuve un problema similar al descrito en el que tenía 2 clientes (llámalos A & B) leyendo y modificando un único archivo xml. Cliente Un nodo eliminado X luego el Cliente B intentó actualizar el nodo X. Claramente, la actualización de un nodo que ya no existe es un problema. Para resolver este problema, me inspiré en SQL Server, que informa el número de filas afectadas por una instrucción UPDATE.En este caso particular, planteé el evento UpdateNode de forma normal con varias propiedades afectadas de filas configuradas en cero.
Probablemente deba definir lo que quiere decir con * excepción personalizada * –
También existe la clase System.Data.ObjectNotFoundException
que puede considerar.
Esa forma parte de System.Data.Entity.dll y podría crear una dependencia innecesaria. – Stijn
@Stijn Sure.That es por eso que dije 'usted puede considerar'. –
- 1. NSURLConnection sendSynchronousRequest - datos faltantes
- 2. Preguntas sobre datos faltantes
- 3. manejo de datos faltantes en Pandas
- 4. Copia de PostgreSQL desde CSV con valores de datos faltantes
- 5. Reducción de dimensiones en datos categóricos con valores faltantes
- 6. Ancho uniforme para geom_bar en caso de datos faltantes
- 7. Niberhate y milisegundos faltantes
- 8. ¿Cómo manejas los datos faltantes usando numpy/scipy?
- 9. Plantillas de proyecto/elemento faltantes
- 10. Predicción de valores de datos faltantes en una base de datos
- 11. eclipse -restore proyectos faltantes
- 12. cx_Freeze módulos faltantes error
- 13. svn registrar revisiones faltantes
- 14. valores faltantes - Método vecino de Hot Deck
- 15. Dlls faltantes en 64 bit Win
- 16. Visual Studio 2012 marcos faltantes
- 17. Excel no puede habilitar referencias/funciones faltantes
- 18. Idiomas faltantes en el simulador de iOS
- 19. Conjuntos faltantes en plantillas de proyecto predeterminadas
- 20. Tipos de depurador faltantes en VS2005
- 21. gcc reverse_iterator operadores de comparación faltantes?
- 22. Encontrar huecos (registros faltantes) en los registros de la base de datos usando SQL
- 23. Uso de Numpy para encontrar el valor promedio en los conjuntos de datos, con algunos datos faltantes
- 24. red neuronal: Manejo de entradas no disponibles (datos faltantes o incompletos)
- 25. R: Encuentre las columnas faltantes, agregue al marco de datos si falta
- 26. Seleccionar filas sin valores faltantes en R
- 27. Buscar fechas faltantes para un rango determinado
- 28. Buscar columnas con todos los valores faltantes
- 29. Agregar líneas nuevas faltantes en varios archivos
- 30. Encontrar valores faltantes en una matriz numpy
¿Por qué lanzar una excepción cuando puede devolver el resultado de la función que indica que faltan algunos datos? – Lightman