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

  Рет қаралды 12,373

CodelyTV - Redescubre la programación

CodelyTV - Redescubre la programación

Күн бұрын

Пікірлер: 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.
@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.
@nolascomedina9545
@nolascomedina9545 29 күн бұрын
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!
@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.
@hba6018
@hba6018 Ай бұрын
Codely esta a otro nivel.
@carlosestebangil
@carlosestebangil Ай бұрын
muy claro este video, sigan asi a este nivel de claridad. muy buen canal
@miguelsalas634
@miguelsalas634 29 күн бұрын
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 18 күн бұрын
En ningún bootcamp dudo que enseñen eso
@ppdbm7352
@ppdbm7352 17 күн бұрын
@@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
@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 kzbin.info/www/bejne/rnuVZmZjqpmmjq8 2. Por qué Raise kzbin.info/www/bejne/bojHoaWer9KEm5Y 3. Either en java kzbin.info/www/bejne/Z4eZiKSAm9hjeZY
@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
@Deus-lo-Vuilt
@Deus-lo-Vuilt Ай бұрын
Buenísimo vídeo ❤
@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.
@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.
@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
@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 😊
@pablomarianom
@pablomarianom Ай бұрын
Primer comentario :)
@CodelyTV
@CodelyTV Ай бұрын
Qué velooooz!! Vigila que no sale una excepción por una condición de carrera!!!!
@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 🙌
@danielrosario453
@danielrosario453 Ай бұрын
Yo con Golang en la mochila.
Por qué no puede haber SOLID sin Eventos de Dominio
21:14
CodelyTV - Redescubre la programación
Рет қаралды 12 М.
Mejora la Calidad de tu Código utilizando Value Objects
16:20
CodelyTV - Redescubre la programación
Рет қаралды 34 М.
Throwing Swords From My Blue Cybertruck
00:32
Mini Katana
Рет қаралды 11 МЛН
POV: Your kids ask to play the claw machine
00:20
Hungry FAM
Рет қаралды 8 МЛН
Underwater Challenge 😱
00:37
Topper Guild
Рет қаралды 47 МЛН
Qué es la Consistencia Eventual | Diseño de Sistemas
16:58
CodelyTV - Redescubre la programación
Рет қаралды 10 М.
Cómo evito usar JOINs
12:54
CodelyTV - Redescubre la programación
Рет қаралды 32 М.
Kafka: Qué es y cómo funciona (en menos de 10')
6:45
Jonathan Gonzalez @ SAFE BYTE LABS
Рет қаралды 42 М.
RabbitMQ vs Kafka - ¿Cuál escoger?
27:03
CodelyTV - Redescubre la programación
Рет қаралды 36 М.
Los 3 tipos de Caché que todo Developer debería conocer: HTTP vs Reverse Proxy vs App
15:50
CodelyTV - Redescubre la programación
Рет қаралды 36 М.
Cuánto durará el reino de JavaScript
17:57
Platzi
Рет қаралды 114 М.
Lo que necesitas saber de IA como Developer: Modelos vs Ollama vs LangChain
16:57
CodelyTV - Redescubre la programación
Рет қаралды 20 М.
No generes los IDs desde la Base de Datos, genéralos desde el Frontend
13:10
CodelyTV - Redescubre la programación
Рет қаралды 33 М.
Clean Architecture: La mejor forma de escalar y mantener tu código
17:52
CodelyTV - Redescubre la programación
Рет қаралды 191 М.
Por qué aprender Arquitectura de Software | #laFunción 9x10
53:06
CodelyTV - Redescubre la programación
Рет қаралды 66 М.
Throwing Swords From My Blue Cybertruck
00:32
Mini Katana
Рет қаралды 11 МЛН