none
try catch RRS feed

  • Pregunta

  • Hola a todos tengo una duda espero que me la puedan aclarar.. tengo dentro de un metodo varios try catch la duda es si se dispara algunopor ejemplo el primero de ellos no sigue avanzando el debugueo por los otros y si se parara ahi y sale del metodo como hacer para que siga recorriendo el codigo conompleto es decir k pase por todos los try catch ejemplo:

                        string rgb1 = "";
                        string rgb2 = "";
                        string rgb3 = "";
                        string rgb4 = "";
                        string rgb5 = "";
                        string rgb6 = "";
                        string rgb7 = "";
                        string rgb8 = "";
                        string rgb9 = "";
                        string rgb10 = "";
                        string n_color1 = "";
                        string n_color2 = "";
                        string n_color3 = "";
                        string n_color4 = "";
                        string n_color5 = "";
                        string n_color6 = "";
                        string n_color7 = "";
                        string n_color8 = "";
                        string n_color9 = "";
                        string n_color10 = "";
                        int id_prueba = Prueba.Devolver_Prueba_Activa(nombre).id_prueba;                    
                        string temperatura = lbl1_TempEstufa.Text;
                        try { rgb1 = rgb[0]; n_color1 = fotos_color[0].Name; }
                        catch (Exception) {}
                        try { rgb2 = rgb[1]; n_color2 = fotos_color[1].Name; }
                        catch (Exception) { }
                        try { rgb3 = rgb[2]; n_color3 = fotos_color[2].Name; }
                        catch (Exception) { }
                        try { rgb4 = rgb[3]; n_color4 = fotos_color[3].Name; }
                        catch (Exception) { }
                        try { rgb5 = rgb[4]; n_color5 = fotos_color[4].Name; }
                        catch (Exception) { }
                        try { rgb6 = rgb[5]; n_color6 = fotos_color[5].Name; }
                        catch (Exception) { }
                        try { rgb7 = rgb[6]; n_color7 = fotos_color[6].Name; }
                        catch (Exception) { }
                        try { rgb8 = rgb[7]; n_color8 = fotos_color[7].Name; }
                        catch (Exception) { }
                        try { rgb9 = rgb[8]; n_color9 = fotos_color[8].Name; }
                        catch (Exception) { }
                        try { rgb10 = rgb[9]; n_color10 = fotos_color[9].Name; }
                        catch (Exception) { }

    Esto lo hago ya que fue la unica idea que c me ocurrio para resolver la situacion k tengo RGB es un arreglo inicializado en 10 posiciones  RGB[10] pero el arreglo puede estar lleno o no las posiciones k no esten llenas las necesito llenar con vacio ""

    miércoles, 30 de mayo de 2018 12:49

Respuestas

  • Hola jlpavon1987:

    Eso no es una buena idea.Tienes diversas formas.

    La más lógica supongo que es utilizar esto

    https://msdn.microsoft.com/es-es/library/system.string.isnullorempty(v=vs.110).aspx

    La excepcion generada es NullReferenceException.

    Tambien puedes utilizar el operador ternario.

    rgb1= rgb[0]==null?"":rgb[0];

    o if(String.IsNullOrEmpty(rgb[0])) rgb1="" else rbg1=rgb[0];

    y try cachear muchos métodos, además de probablemente mermar el rendimiento, te generará errores, que no has tenido en cuenta. Como por ejemplo que si puedes inicializar rgb10 = null por tanto tambien le puedes asignar un null que es el valor de Rgb[9] y ni te has dado cuenta, de manera que el código le ha dicho al recolector de basura, que tu variable String rgb10, ya puede disponer de su posición de memoria, porque terminaste con ella.....

    Un saludo


    • Marcado como respuesta jlpavon1987 miércoles, 30 de mayo de 2018 13:57
    miércoles, 30 de mayo de 2018 13:44

Todas las respuestas

  • Hola jlpavon1987:

    Eso no es una buena idea.Tienes diversas formas.

    La más lógica supongo que es utilizar esto

    https://msdn.microsoft.com/es-es/library/system.string.isnullorempty(v=vs.110).aspx

    La excepcion generada es NullReferenceException.

    Tambien puedes utilizar el operador ternario.

    rgb1= rgb[0]==null?"":rgb[0];

    o if(String.IsNullOrEmpty(rgb[0])) rgb1="" else rbg1=rgb[0];

    y try cachear muchos métodos, además de probablemente mermar el rendimiento, te generará errores, que no has tenido en cuenta. Como por ejemplo que si puedes inicializar rgb10 = null por tanto tambien le puedes asignar un null que es el valor de Rgb[9] y ni te has dado cuenta, de manera que el código le ha dicho al recolector de basura, que tu variable String rgb10, ya puede disponer de su posición de memoria, porque terminaste con ella.....

    Un saludo


    • Marcado como respuesta jlpavon1987 miércoles, 30 de mayo de 2018 13:57
    miércoles, 30 de mayo de 2018 13:44
  • Muchas gracias amigo no habia visto la sintaxis del operador ternario como explicas si me pudieras dar unos links donde explican esa sintaxis te agradeceria
    miércoles, 30 de mayo de 2018 13:58
  • Claro

    https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/operators/conditional-operator

    Es muy simple....

    Expresion condicional ? caso verdad : caso erroneo;

    En un caso normal

    variable = (expresion a evaluar cuyo resultado es un boolean) ? asignacion a variable si true: asignacion si false;

    esto sería igual: a  if (expresion) asignacion a variable else asignacion a variable

    Un saludo

    miércoles, 30 de mayo de 2018 14:25
  • Muchas gracias ya aprendi algo nuevo
    miércoles, 30 de mayo de 2018 14:39
  • hola

    pero en lugar de programar ante el error, porque no validas previamente si existe el index dentro del array

    ElementAtOrDefault

    usarias ese metodo de linq para obtener el valor o uno por defecto, asi no programar con el error y no usas el try..catch

    en caso de no existir el index obtendrias un vacio que puede validar, pero no tendrias un exception

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 30 de mayo de 2018 14:41