Тёмный

Por qué no uso Excepciones genéricas en mi código 

CodelyTV - Redescubre la programación
Подписаться 153 тыс.
Просмотров 13 тыс.
50% 1

La manera más común de controlar los errores es utilizar Exception. Pero esto tiene diversos problemas. En el vídeo de hoy lo analizamos.
Curso → cdly.to/curso-...
﹤🍍﹥ Codely
├ 🎥 Suscríbete: ru-vid.com...
├ 🔖 Cursos: bit.ly/cursos-...
└ 👋 Redes sociales:
├ / codelytv
├ / javiercane
├ / rafaoe
├ / codelytv
└ / codelytv

Опубликовано:

 

15 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 38   
@lsolano2707
@lsolano2707 Месяц назад
Excelente, ultimamente estan sacando unos super cursos pequeños pero sustanciosos, sigan asi
@Jhonmundo
@Jhonmundo Месяц назад
Es muy util tener excepciones personalizadas, sobre todo si hereden de un tipo en en especifico que pueda manejar en la capa de infraestructura para poder atraparlas y generar una respuesta automaticamente del tipo 400 - BAD REQUEST para las APIs REST.
@nolascomedina9545
@nolascomedina9545 Месяц назад
Muy buen video! Justamente, siempre he encontrado que el manejo de excepciones es un lío. Ahora con esto, se me ocurren algunas cosas que puedo hacer, muchas gracias!
@hba6018
@hba6018 Месяц назад
Codely esta a otro nivel.
@carlosestebangil
@carlosestebangil Месяц назад
muy claro este video, sigan asi a este nivel de claridad. muy buen canal
@jonathanhernandez-kv4ck
@jonathanhernandez-kv4ck Месяц назад
Las excepciones personalizadas me parece excelente, pero por experiencia para tener una trazabilidad más completa es necesario agregar códigos de error para tu exception, y así evitas crear cincuenta mil exceptions.
@edwineinsen
@edwineinsen Месяц назад
Una consulta, también puedo utilizar el patrón "Cadena de Responsabilidad" (Chain of Responsibility) ya que casualmente donde trabajo hicieron una demo de este, y me pareció excelente para el manejo de excepciones, ya que permite desacoplar el emisor de la excepción (el código que la lanza) del receptor (el código que la maneja). Crear una cadena de manejadores, puesto que cada manejador tiene la oportunidad de procesar la excepción. Si un manejador no puede manejarla, la pasa al siguiente en la cadena. También se pueden agregar o quitar manejadores de la cadena sin afectar a otros componentes del sistema. Qué les parece? P.D. Me gusta mucho lo que comparten, muchas gracias.
@miguelsalas634
@miguelsalas634 Месяц назад
He escuchado que las excepciones pueden causar problemas de rendimiento que solo se recomiendan en casos donde realmente el codigo se rompe y no en logica de la aplicacion es cierto esto?
@ppdbm7352
@ppdbm7352 Месяц назад
Esto nos lo enseñaron en el bootcamp de MERN stack hace batantes años, muy buena!
@johanlopeztorres235
@johanlopeztorres235 26 дней назад
En ningún bootcamp dudo que enseñen eso
@ppdbm7352
@ppdbm7352 25 дней назад
@@johanlopeztorres235 a nosotros un día nos lo enseñó el profesor, qué quieres que te diga... 🤷
@juanpablodiazalbarracin7182
@juanpablodiazalbarracin7182 Месяц назад
Yo lo uso en Symfony y es muy util
@caballoloco100
@caballoloco100 Месяц назад
Buen contenido 👍
@BackDoorMann
@BackDoorMann Месяц назад
Todavía no he visto jamás un caso práctico donde sea posible recuperarse de una excepción. En todos los casos lo que se hace es loggear el error. Para eso no hacen falta complejas jerarquías de excepciones personalizadas.
@atorancio
@atorancio Месяц назад
IMPORTANTE!!: Tener buena politica de retrys y usar DLQ, porque (hablo por experiencia) si hay mucha concurrencia y en orquestaciones tenes algun error de estos controlados, puede quebrar el rendimiento de tu app estos objetos! True Story.. jeje
@Deus-lo-Vuilt
@Deus-lo-Vuilt Месяц назад
Buenísimo vídeo ❤
@Thelimbers7
@Thelimbers7 Месяц назад
Esos cursos son súper útiles, es una pena que de momento no me pueda permitir la suscripción :(. Yo aprendí muchas de esas cosas con recursos de internet, blogs, artículos con Result, Either, etc y la verdad fue muy difícil al no tener una guia especializada y aún tengo dudas de los mismos/
@CodelyTV
@CodelyTV Месяц назад
Iremos publicando más vídeos sobre la gestión de errores aquí. 🙌 También tienes estos 3 vídeos/directos que pueden ser interesantes: 1. Por qué Either ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-xJ253-u4sXM.html 2. Por qué Raise ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-8WdprhzmQe4.html 3. Either en java ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-1V6WqJfs0C4.html
@Thelimbers7
@Thelimbers7 Месяц назад
@@CodelyTV Gracias, ya me miré esos videos, la calidad es exepcional como siempre, también los videos de patrones de diseño criteria, clean architecture, solid, modelado del dominio, son todos muy útiles
@victorhugotiradopenaranda3149
@victorhugotiradopenaranda3149 Месяц назад
Teniendo en mi API las clases BadRequestException, que extiende de Exception, y luego EmailRequiredException, que extiende de BadRequestException, ¿es recomendable delegar a BadRequestException la tarea de emitir el response de estado 400 al cliente? Sabiendo que este tipo de errores serán manejados por esta excepción, sería cómodo delegarle esta tarea, pero no sé si en realidad sea recomendable, ya que esa no es la esencia de una excepción.
@barrenaedu
@barrenaedu Месяц назад
Keep It Simple (KISS), no estoy de acuerdo con lo que dicen. Si las excepciones se usan solo para logear, crear excepciones personalizadas para cada validación posible no tiene ningún sentido, se sale de control, se crean excepciones repetidas, etc.., es mejor usa la exception generica Exception (porque siempre se loguea el stack trace y sabemos de donde viene el error). Para crear excepciones personalizadas hay tener muy en claro el motivo, y no tiene que pasar por un simple logueo.
@bagocavs
@bagocavs Месяц назад
testear casos de usos complejos con excepciones genericas es un dolor de huevos, al personalizar cada excepcion se simplifica el testing mucho, me sorprendio que no mencionaran eso, me parece uno de los mayores beneficios
@barrenaedu
@barrenaedu Месяц назад
@@bagocavs comprendo tu punto de vista, pero codificar pensando en el testing no sería tampoco adecuado, el coding debería ser agnostico al testing. Porque si se entra en ese terreno las cosas pueden terminar mal, como metodos publicos, etc..
@bagocavs
@bagocavs Месяц назад
@@barrenaedu comparto lo que decis, pero creo que para el tema de la excepciones vale la pena, me parece que el beneficio que aportan es mayor a su "costo"
@erickgualpa9770
@erickgualpa9770 Месяц назад
La gran ventaja que te puede aportar (y digo puede porque cada caso es único) es tener un control sobre esos escenarios excepcionales de tu aplicación/dominio. Si tienes en el código esa facilidad para controlar esos escenarios tienes una gran flexibilidad a la hora de diseñar tu aplicación en cuánto a como se comporta durante los "sad-paths". El objetivo no es el logging, es la centralización (o encapsulación) de está lógica en el dominio. Ejemplo muy básico: La validación de un filtro de rango de fechas, pudiéndose lanzar una excepción tipo InvalidDateRangeFilter o incluso DateRangeIsSwapped (dependiendo de lo fino que quiera hilarse). No tienes porque loggear esa excepción, a lo mejor solo quieres mapearla a un 400 si es un controller lo que ejecuta el caso de uso pero de esta forma te aseguras que la excepción se controla desde un único sitio. De otra forma a lo mejor acabarías validando esto previo a ejecutar una query a BBDD o la llamada al servicio de turno (dependiendo de cuál fuese tu implementación), si es que se validase en el mejor de los casos...
Месяц назад
Estoy en parte de acuerdo con lo que dices. En mi caso este tipo de excepciones las uso para modelar business rules de mi dominio. Nunca como una simple cláusula de guarda. Las mónadas usando result pattern lo dejo para la capa de aplicación
@Sam-hu3xt
@Sam-hu3xt Месяц назад
Y en vez de usar try-catch que os parece evaluar todas las precondiciones necesarias para llamar a un método usando un if-else, algo del rollo: if( query_will_succeed( /* params */ ) /* call query branch */ else /* query error branch */ Lo digo para ciertos entornos en los que no esté permitido saltos entre contextos de ejecución.
@plasmodiun1
@plasmodiun1 Месяц назад
Las excepciones son eso algo excepcional por eso deben manejarse como tal y no evitar su uso
@escorpolo
@escorpolo Месяц назад
Combinalo con el patrón de diseño Result
@signas13
@signas13 Месяц назад
Por un momento me hicieron dudar de mi mismo y fui corriendo a mi editor a ver si podía extender de la clase Exception. Creo que se confundieron con otro lenguaje.
@CodelyTV
@CodelyTV Месяц назад
Es para mostrar el ejemplo y que la keyword más común en los lenguajes es Exception 🙌 Correcto que en el mundo Js es Error 😊
@DanielRamos-zx1kh
@DanielRamos-zx1kh Месяц назад
Solo un detalle: en JS/TS es new Error, no Exception jaja
@CodelyTV
@CodelyTV Месяц назад
Totalmente! Es para mostrar el uso de la Keyword más usada 🙌
@pablomarianom
@pablomarianom Месяц назад
Primer comentario :)
@CodelyTV
@CodelyTV Месяц назад
Qué velooooz!! Vigila que no sale una excepción por una condición de carrera!!!!
@danielrosario453
@danielrosario453 Месяц назад
Yo con Golang en la mochila.
Далее
Cuánto durará el reino de JavaScript
17:57
Просмотров 116 тыс.
Моя Бывшая - Зомби Вернулась!
24:45
My 10 “Clean” Code Principles (Start These Now)
15:12
Por qué no puede haber SOLID sin Eventos de Dominio
21:14
RabbitMQ vs Kafka - ¿Cuál escoger?
27:03
Просмотров 37 тыс.
Diferencias entre Value Object vs Entidad vs Agregado
19:33
Casi Pierdo mi Trabajo por un Try Catch
9:32
Просмотров 61 тыс.
Cómo evito usar JOINs
12:54
Просмотров 32 тыс.
¿Por qué Debes Aprender ARQUITECTURA de SOFTWARE?
20:34