none
Detectar errores RRS feed

  • Pregunta

  • Hola a todos:

    Quiero saber como puedo depurar(no se si sea la palabra correcta), o sea que me detecte el error, utilizo mucho los puntos de interrupcion y eso me ha ayudado bastante.El problemas es que cuando tengo una lista por ejemplo con 10000 registros y tengo el siguiente codigo:

    var listafiltrada = await _db.Informe.Where(s => s.Garantia != "" && s.Garantia != null).ToListAsync();
    var ordenn = listafiltrada.OrderBy(s => s.InformeId);
    var listafecha = new List<OrdenarFecha>();
      foreach (var item in ordenn)
      {
        listafecha.Add(new OrdenarFecha
         {
           Informe = item.Informe,
           Fecha = Convert.ToDateTime(item.Garantia),
          });
       };

    El problema es que por ejemplo en el foreach el Visual Studio no se detiene como en otras ocasiones cuando te da un error y en la pagina web me dice que habido un error.

    Mi consulta como puedo depurar con condiciones(se que el Visual lo hace)de modo que por ejemplo si el item.Informe numero 5555 tiene datos incorrectos, el programa lo detecte y me lo advierta y no tenga que estar registro por registro viendo si contiene datos incorrectos.

    De antemano muchas gracias.



    Juan Lobos

    sábado, 18 de junio de 2016 17:00

Respuestas

  • Hola Juan,

    son dos problemas diferentes.

    Puedes establecer puntos de interrupción condicionales: puntos de interrupción que detengan la ejecución de la aplicación sólo si se produce una condición que establezcas.

    Para ello:

    Crea un punto de interrupción normal. 
    Haz click con el botón derecho sobre el punto rojo del punto de interrupción.
    En el menú contextual pulsa en la opción "Condiciones..."
    Establece la condición bajo la cual se debería detener la interrupción.

    Otro problema diferente es porqué no se detiene la ejecución cuando se produce un error dentro del for each.

    En principio no tiene nada que ver que la instrucción se encuentre dentro del for each. El comportamiento debería ser el mismo.

    Supongo que el problema estará en el tipo de excepción. Por defecto Visual Studio viene configurado para detener la ejecución únicamente en algunos tipos de errores, si se produce un error de otro tipo la ejecución continúa.

    Para solucionarlo:

    Abre la ventana "Configuración de excepciones" (Menú Depurar -> Ventanas -> Configuración de excepciones)
    Chequea la opción "Common Language Runtime Exceptions" para que Visual Studio se detenga en todas las excepciones generadas por el CLR
    Vuelve a depurar el proyecto y comprueba si ahora se detiene al producirse el error


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Propuesto como respuesta Sergio Parra sábado, 18 de junio de 2016 21:09
    • Marcado como respuesta jhon1121 sábado, 18 de junio de 2016 23:33
    sábado, 18 de junio de 2016 20:08

Todas las respuestas

  • Hola Juan,

    son dos problemas diferentes.

    Puedes establecer puntos de interrupción condicionales: puntos de interrupción que detengan la ejecución de la aplicación sólo si se produce una condición que establezcas.

    Para ello:

    Crea un punto de interrupción normal. 
    Haz click con el botón derecho sobre el punto rojo del punto de interrupción.
    En el menú contextual pulsa en la opción "Condiciones..."
    Establece la condición bajo la cual se debería detener la interrupción.

    Otro problema diferente es porqué no se detiene la ejecución cuando se produce un error dentro del for each.

    En principio no tiene nada que ver que la instrucción se encuentre dentro del for each. El comportamiento debería ser el mismo.

    Supongo que el problema estará en el tipo de excepción. Por defecto Visual Studio viene configurado para detener la ejecución únicamente en algunos tipos de errores, si se produce un error de otro tipo la ejecución continúa.

    Para solucionarlo:

    Abre la ventana "Configuración de excepciones" (Menú Depurar -> Ventanas -> Configuración de excepciones)
    Chequea la opción "Common Language Runtime Exceptions" para que Visual Studio se detenga en todas las excepciones generadas por el CLR
    Vuelve a depurar el proyecto y comprueba si ahora se detiene al producirse el error


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Propuesto como respuesta Sergio Parra sábado, 18 de junio de 2016 21:09
    • Marcado como respuesta jhon1121 sábado, 18 de junio de 2016 23:33
    sábado, 18 de junio de 2016 20:08
  • Oh vale gracias por responder, no tenia idea que el Visual Studio solo se detiene con algunos tipos de excepciones. Me pasaba mucho con listas de datos grandes que por ejemplo importaba de excel y al pasarlo a la base de datos, en la pagina web decia que datos no era validos, sin embargo no se detenia la ejecucion, tenia que ir fila por fila viendo que fila ocasionaba el error.Gracias hare lo que dices



    Juan Lobos

    sábado, 18 de junio de 2016 23:18
  • Gracias hice eso de la configuracion de las excepciones y me detecta altiro una falla.Mi consulta es la siguiente al marcar todas las excepciones no pierde rendimiento el Visual Studio?

    De todos modos muchas gracias


    Juan Lobos

    sábado, 18 de junio de 2016 23:32
  • Eso no debería ser una preocupación. Ten en cuenta que la configuración de excepciones únicamente afecta al proceso de depuración, no tiene ningún efecto cuando ejecutas la aplicación ya compilada.

    Los problemas que puedes tener son otros:

    Por un lado en algunas aplicaciones pueden saltar excepciones que no quieras controlar. Para evitar esto puedes dejar la configuración por defecto y activar las excepciones concretas que quieras controlar.

    Por otro lado, y es el mayor problema que le veo a la ventana de configuración de excepciones, la configuración modificada no se guarda por lo que cuando reinicies el Visual Studio volverá a la configuración por defecto. Sé que es algo que el equipo de desarrollo de Visual Studio tiene pensado solucionar próximamente.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    domingo, 19 de junio de 2016 5:28
  • Gracias por las respuestas

    Juan Lobos

    domingo, 19 de junio de 2016 16:00