{"id":200,"date":"2023-07-07T13:54:25","date_gmt":"2023-07-07T16:54:25","guid":{"rendered":"https:\/\/danielsegovia.com\/plataforma\/?p=200"},"modified":"2023-07-23T19:27:11","modified_gmt":"2023-07-23T22:27:11","slug":"12-excepciones-try-catch","status":"publish","type":"post","link":"https:\/\/danielsegovia.com\/plataforma\/12-excepciones-try-catch\/","title":{"rendered":"12 &#8211; Excepciones (try \/ catch)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u00bfQu\u00e9 pasa si? &#8230;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imaginemos que est\u00e1s organizando una fiesta en tu casa. Tienes varios invitados, pero nunca se sabe qu\u00e9 podr\u00eda suceder durante la celebraci\u00f3n. Algunos invitados podr\u00edan derramar algo de bebida en el suelo, otros podr\u00edan tropezar y caer, e incluso podr\u00eda haber alg\u00fan accidente menor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed es donde entra en juego el concepto de <strong>try-catch<\/strong> en JavaScript. Puedes considerar cada bloque try-catch como una medida de seguridad que tomas para manejar los posibles contratiempos durante tu fiesta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El bloque \u00ab<strong>try<\/strong>\u00bb es como una zona donde ocurren las cosas. Imagina que es la pista de baile de tu fiesta. Aqu\u00ed es donde se ejecutan tus l\u00edneas de c\u00f3digo y ocurren diferentes acciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin embargo, en cualquier momento, algo inesperado podr\u00eda ocurrir. Por ejemplo, un invitado podr\u00eda tropezar y caer en la pista de baile. En lugar de dejar que esto interrumpa toda la fiesta, puedes utilizar el bloque \u00abcatch\u00bb para manejar el problema de manera adecuada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El bloque \u00ab<strong>catch<\/strong>\u00bb act\u00faa como un equipo de seguridad que est\u00e1 listo para responder r\u00e1pidamente a cualquier incidente. Cuando ocurre un error en el bloque \u00abtry\u00bb, se activa el bloque \u00abcatch\u00bb y se ejecuta un c\u00f3digo espec\u00edfico para manejar esa situaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Siguiendo con nuestra met\u00e1fora de la fiesta, si alguien tropezara y cayera en la pista de baile, tu equipo de seguridad (el bloque \u00abcatch\u00bb) r\u00e1pidamente acudir\u00eda al rescate. Ayudar\u00edan a levantar a la persona, verificar\u00edan si est\u00e1 bien y luego har\u00edan todo lo posible para asegurarse de que la fiesta contin\u00fae sin problemas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En JavaScript, el bloque \u00abcatch\u00bb captura cualquier excepci\u00f3n (error) que ocurra en el bloque \u00abtry\u00bb y permite que el c\u00f3digo contin\u00fae ejecut\u00e1ndose sin interrupciones importantes. Esto es especialmente \u00fatil cuando se trabaja con operaciones que podr\u00edan generar errores, como la manipulaci\u00f3n de archivos, solicitudes de red o c\u00e1lculos complejos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En resumen, la met\u00e1fora del try-catch en JavaScript se puede comparar con organizar una fiesta donde el bloque \u00abtry\u00bb es la zona de acci\u00f3n y el bloque \u00abcatch\u00bb es tu equipo de seguridad listo para manejar cualquier incidente inesperado y garantizar que la fiesta siga su curso sin problemas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed tienes un ejemplo simple de try-catch, primero en pseudoc\u00f3digo y luego en c\u00f3digo JavaScript:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pseudoc\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">intentar {\n  \/\/ Bloque de c\u00f3digo donde pueden ocurrir errores\n  \/\/ ...\n} capturar (error) {\n  \/\/ Bloque de c\u00f3digo para manejar el error\n  \/\/ ...\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En JavaScript el c\u00f3digo es as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">try {\n  \/\/ Bloque de c\u00f3digo donde pueden ocurrir errores\n  const dividendo = 10;\n  const divisor = 0;\n  const resultado = dividendo \/ divisor;\n  console.log(\"El resultado es: \" + resultado);\n} catch (error) {\n  \/\/ Bloque de c\u00f3digo para manejar el error\n  console.log(\"Ha ocurrido un error: \" + error.message);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este ejemplo, estamos intentando realizar una divisi\u00f3n entre dos n\u00fameros: <code>dividendo<\/code> y <code>divisor<\/code>. Sin embargo, hemos establecido el divisor en 0, lo cual generar\u00e1 un error de divisi\u00f3n por cero.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el bloque <code>try<\/code>, se ejecuta el c\u00f3digo normalmente. Sin embargo, dado que la divisi\u00f3n por cero es un error, se lanza una excepci\u00f3n (error) y el control se transfiere al bloque <code>catch<\/code>. Dentro del bloque <code>catch<\/code>, capturamos el error y mostramos un mensaje adecuado en la consola.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso, el mensaje de error ser\u00eda \u00abHa ocurrido un error: Division by zero\u00bb, indicando que se ha producido un error de divisi\u00f3n por cero.<br>Al c\u00f3digo siempre dividir por 0 tirar\u00e1 el error pero si llevamos el bloque de try\/catch a una funci\u00f3n comienza a tener m\u00e1s sentido ya que la funci\u00f3n no sabe que valores le llegar\u00e1n cuando sea invocada, veamos el ejemplo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">function dividirNumeros(dividendo, divisor) {\n  try {\n    if (divisor === 0) {\n      throw new Error(\"No se puede dividir por cero.\");\n    }\n\n    const resultado = dividendo \/ divisor;\n    return resultado;\n  } catch (error) {\n    console.log(\"Ha ocurrido un error: \" + error.message);\n    return null;\n  }\n}\n\n\/\/ Ejemplo de uso de la funci\u00f3n dividirNumeros\nconsole.log(dividirNumeros(10, 2));   \/\/ Resultado: 5\nconsole.log(dividirNumeros(8, 0));    \/\/ Error: No se puede dividir por cero. (y devuelve null)\nconsole.log(dividirNumeros(12, 3));   \/\/ Resultado: 4\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este ejemplo, la funci\u00f3n <code>dividirNumeros<\/code> acepta dos par\u00e1metros: <code>dividendo<\/code> y <code>divisor<\/code>. El prop\u00f3sito de la funci\u00f3n es dividir <code>dividendo<\/code> entre <code>divisor<\/code> y devolver el resultado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro del bloque <code>try<\/code>, verificamos si el divisor es igual a cero. Si es as\u00ed, lanzamos una nueva instancia de <code>Error<\/code> utilizando <code>throw<\/code>, indicando que no se puede dividir por cero. Este lanzamiento de excepci\u00f3n interrumpe la ejecuci\u00f3n normal y se pasa al bloque <code>catch<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro del bloque <code>catch<\/code>, capturamos el error, mostramos un mensaje en la consola y devolvemos <code>null<\/code>. Esto indica que ha ocurrido un error y el resultado de la divisi\u00f3n no se puede calcular correctamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luego, se muestran ejemplos de uso de la funci\u00f3n <code>dividirNumeros<\/code>. En el primer caso, se proporcionan par\u00e1metros v\u00e1lidos y se obtiene el resultado de la divisi\u00f3n (5). En el segundo caso, se intenta dividir por cero, lo cual genera un error y se muestra un mensaje correspondiente en la consola. La funci\u00f3n devuelve <code>null<\/code> en este caso. En el tercer caso, se proporcionan par\u00e1metros v\u00e1lidos y se obtiene el resultado de la divisi\u00f3n (4).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El uso del try-catch en esta funci\u00f3n nos permite manejar los errores espec\u00edficos que pueden ocurrir durante la ejecuci\u00f3n, proporcionando una respuesta adecuada en cada caso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfVes alg\u00fan error m\u00e1s que se pueda producir en la funci\u00f3n? Ser\u00eda bueno que lo agregues :-)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por \u00faltimo, tenemos la instrucci\u00f3n <strong>finally<\/strong>, traducido ser\u00eda finalmente, es decir que el flujo pasar\u00e1 por all\u00ed independientemente si su ejecucci\u00f3n fue exitosa o no.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">function dividirNumeros(dividendo, divisor) {\n  try {\n    if (divisor === 0) {\n      throw new Error(\"No se puede dividir por cero.\");\n    }\n\n    const resultado = dividendo \/ divisor;\n    return resultado;\n  } catch (error) {\n    console.log(\"Ha ocurrido un error: \" + error.message);\n    return null;\n  } finally {\n    console.log(\"Se ha intentado realizar la divisi\u00f3n.\");\n  }\n}\n\n\/\/ Ejemplo de uso de la funci\u00f3n dividirNumeros\nconsole.log(dividirNumeros(10, 2));   \/\/ Resultado: 5\nconsole.log(dividirNumeros(8, 0));    \/\/ Error: No se puede dividir por cero. (y devuelve null)\nconsole.log(dividirNumeros(12, 3));   \/\/ Resultado: 4\n<\/code><\/pre>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Reviv\u00ed la clase en vivo<\/h2>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Curso Node.Js - Clase 12 - Funciones y try\/catch\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/S0Z_SwrAZh0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 pasa si? &#8230;. Imaginemos que est\u00e1s organizando una fiesta en tu casa. Tienes varios invitados, pero nunca se sabe qu\u00e9 podr\u00eda suceder durante la celebraci\u00f3n. Algunos invitados podr\u00edan derramar algo de bebida en el suelo, otros podr\u00edan tropezar y caer, e incluso podr\u00eda haber alg\u00fan accidente menor. Aqu\u00ed es donde entra en juego el &#8230; <a title=\"12 &#8211; Excepciones (try \/ catch)\" class=\"read-more\" href=\"https:\/\/danielsegovia.com\/plataforma\/12-excepciones-try-catch\/\" aria-label=\"Leer m\u00e1s sobre 12 &#8211; Excepciones (try \/ catch)\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[45,8,32,44],"class_list":["post-200","post","type-post","status-publish","format-standard","hentry","category-curso-de-node-js","category-logica-de-programacion-con-javascript","tag-catch","tag-javascript","tag-node","tag-try"],"_links":{"self":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/comments?post=200"}],"version-history":[{"count":9,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/200\/revisions"}],"predecessor-version":[{"id":644,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/posts\/200\/revisions\/644"}],"wp:attachment":[{"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/media?parent=200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/categories?post=200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/danielsegovia.com\/plataforma\/wp-json\/wp\/v2\/tags?post=200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}