Una Alternativa para los Try Catch | Result Pattern

Поделиться
HTML-код
  • Опубликовано: 26 сен 2024
  • En este video te mostraré una técnica que te servirá como alternativa a los Try Catch.
    🍺 Mis Cursos de PROGRAMACIÓN: hdeleon.net/cu...
    📚 Mis Libros
    📖 Aprender a Programar con C#: hdeleon.net/li...
    🤖 Mi Setup
    🖥️ Mi Monitor: amzn.to/3dtnDkk
    ⌨️ Mi Teclado: amzn.to/3BtjKnq
    ⌨️ Mi Deck elgato: amzn.to/3dvEKC3
    🎧 Mis Orejeras: amzn.to/3BwQYm0
    🎤 Mi Micrófono: amzn.to/3qPvFHh
    Si quieres apoyarme y darme para una cerveza puedes hacerlo por aquí: paypal.me/Hecto...
    Puedes apoyarme desde 0.5 USD al mes uniéndote como miembro al canal aquí: / @hdeleonnet
    🐦Twitter: / powerhdeleon
    🌎Mi Sitio web: hdeleon.net
    📻Raw Radio en Spotify: open.spotify.c...
    #programación #dev #programming

Комментарии • 167

  • @hdeleonnet
    @hdeleonnet  4 месяца назад +7

    Mis Cursos de Programación: hdeleon.net/cursos-premium/
    Mi Nuevo Libro: hdeleon.net/libro-aprender-a-programar-con-c-hector-de-leon/

    • @exkalybur_dev
      @exkalybur_dev 4 месяца назад +1

      hoy me dio ganas de darle like a los últimos 30 videos de hdeleon. no se. simplemente me provocó. listo mas de 60 videos con likes. éxitos mi pana.

  • @AndersenCastaneda
    @AndersenCastaneda Месяц назад +1

    Interesante. Al Garbage Collector le encanta esto.

  • @sebastiansanchez7177
    @sebastiansanchez7177 4 месяца назад +80

    0:02 joder eso si es de ganster, de gansters!

  • @CodeDibertzStride
    @CodeDibertzStride 3 месяца назад +1

    Excelente para manejar la lógica dentro de Stride Engine.

  • @horacioramirez6872
    @horacioramirez6872 4 месяца назад +7

    Todo conocimiento es apreciado siempre aprendemos algo nuevo y le agradezco, ahora desde mi humilde punto de vista creo que es algo que nativamente usamos y mis profesores lo llamaban validación sobre todo porque antes no existia Try Catch, en el tipico ejemplo de un algorimo que pide un nombre y lo imprime en pantalla pero si el nombre contiene numeros que imprima en pantalla "nombre invalido" y mucho antes de eso para validar que no se deborden las variables, etc.. La única diferencia es que usa un unico objeto generico para devolver.

  • @TheMatiasCu
    @TheMatiasCu 4 месяца назад +7

    Yo venía de NET y usaba exceptions para todo... luego estuve con Golang y me encantó utilizar este patrón...

  • @libertad_1214
    @libertad_1214 4 месяца назад +10

    Yo soy usuario de rust y JavaScript, uso tanto result como try/catch. Y tengo que decir que usar result te hace escribir mucho más código que try/catch, aunque sea más rápido y más seguro. Querer micro-optimizar lenguajes a veces no es la mejor idea, ya que pierdes claridad en el código. En muchas ocasiones si lo que busco es compatibilidad y rapidez me voy por el lenguaje de alto nivel, y si quiere rapidez, no micro-optimizo, directamente uso rust. El micro-optimizar es una puerta muy grande, podrías no acabar nunca. Y para los haters, no he dicho que que el patrón esté mal ni que nunca se deba usar, I love rust

    • @muremure
      @muremure 4 месяца назад

      Confirmo

    • @ricardoangelesgomez8667
      @ricardoangelesgomez8667 4 месяца назад

      try catch usado sin conciencia, es lo mismo que cuando te ven los polis, te dan tu calentadita con tehuacanazos, te entamban, te dan tu bienvenida, y luego en la investigación sale que tu no hiciste nada, y entonces llega el "usted disculpe". O cuando anunciaron "La La Land" como ganadora a mejor película, para segundos después ya con la gente arriba del escenario tuvieron que arreglarlo.
      Me parece que validar códigos de error, está muy lejos de la micro-optimización; try catch queda bien en espacios donde es casi imposible prevenir un error.

    • @ricardoangelesgomez8667
      @ricardoangelesgomez8667 4 месяца назад +1

      Imaginate que haces el programa para un robot que hace operaciones, haces cortes por aquí y por allá, el robot se detiene con la excepcion: PatientIsDeadException; cuando pudiste haber validado todos los signos vitales durante el proceso.

    • @muremure
      @muremure 4 месяца назад

      @@ricardoangelesgomez8667 programas al ahí se va entonces, una programación correcta usa las excepciónes como se debe, todo lo demás son validaciones. Sr. 🤖

    • @libertad_1214
      @libertad_1214 4 месяца назад +1

      @@ricardoangelesgomez8667 en ese caso uso rust, y se acaban los problemas. Si lees el final de mi comentario, no digo que el patrón nunca deba usarse, si no que, no debemos usarlo siempre a la ligera

  • @malcubas1
    @malcubas1 4 месяца назад +8

    Bravo, hace tiempo lo usaba sin saber el nombre técnico. 100% aceptado

  • @EnanoForro
    @EnanoForro 4 месяца назад +5

    Mas alla de su velocidad, creo que hace mucho mas legible el codigo, y te permite separar el flujo de trabajo y flujo de validacion.
    Grande hector

  • @davemour
    @davemour 4 месяца назад +4

    En el laburo estaba implementando una integración con varias api y justamente he usado un enfoque similar para la estructura de la salida sin plantearme que fuera un patrón de diseño.
    Me llevo un par de ideas de aquí para acabar de mejorarlo❤

  • @brandonicr6913
    @brandonicr6913 4 месяца назад +6

    Así funciona Go! Aunque un caso excepcional sería un Panic!

  • @alfonsobaqueiro
    @alfonsobaqueiro 3 месяца назад +1

    El origen del try-catch era para evitar tener que escribir código para evaluar el valor de retorno después de cada llamada a función y tener código mejor estructurado.
    En lenguajes de tipo fijo, es un problema ya que el valor de retorno para indicar error no forma parte del "DOMIINIO", como sería el caso de la división por 0, pero en lenguajes de tipo fijo se puede devolver otro tipo de datos en caso de que haya error, por ejemplo una instancia de la clase Error o algo así. En ese caso el código sin try-catch tiene que revisar que el valor devuelto sea un int y no un Error, pero en muchos lenguajes también es un problema por la separación entre tipos nativos como int y clases como Error.
    // js implementation that throws exceptions an validates its arguments
    function divide( x, y ){
    if ( typeof(x) != 'number' ) throw "X not a number";
    if ( typeof(y) != 'number' ) throw "Y not a number";
    if ( y == 0 ) throw "Division by 0";
    return x / y;
    }

  • @santidogor
    @santidogor 4 месяца назад +3

    Buenas Hector! Me gusto el video. Puede ser útil para manejar excepciones de negocio, o cualquier capa menos infraestructura ya que ahi si pueden surgir errores que no tenemos idea de como prevenirlos. No te voy a mentir jajaja vine con expectativa de solucion a ese nivel pero es claro que no se puede. Y un requisito para este tipo de excepción es conocer muy bien el negocio o la app. Sos crack! Saludos

  • @mercetoki
    @mercetoki 4 месяца назад +1

    En C# ese IsSuccess lo uso cuando en el httpClient ejecutó la invocación al REST de cualquier API y se debe consultar si fue exitoso entonces deserializa el resultado.

  • @RCSoftMedia
    @RCSoftMedia 4 месяца назад +5

    Soy programador en Javascript y este patrón la mayoria de programadores suele usarlo de forma inconsciente. La lógica te lleva a hacerlo. Por otro lado, el try catch lo uso casi exclusivamente en código asincronico async await, con fetch especialmente, y muy rara vez como un fallback para realizar alguna operación de limpieza de algun componente el cual no se si existe y cuyo resultado no importa falla o no.

    • @nikcapo
      @nikcapo 4 месяца назад +3

      Programador de Javascript???? Marge, trae la escopeta!!!

    • @RCSoftMedia
      @RCSoftMedia 4 месяца назад +1

      Osea, hago scripts en Javascript, perdón por la ofensa, me gustaría saber que es ser programador para ti.

    • @nikcapo
      @nikcapo 4 месяца назад +1

      @@RCSoftMedia jajajaj era una mala broma solo, como es un video de c#

  • @wgomez1176
    @wgomez1176 4 месяца назад +1

    Excelente explicación

  • @isaaccorona1039
    @isaaccorona1039 4 месяца назад +7

    ¡Buen video master! De gran manera te ayuda mucho a evitar poner a cada momento un try catch, pero algo muy importante a considerar es que hay errores que salen de nuestras manos por las que "romperían" la forma de trabajar el patrón. agregando un manejador de excepción te ayuda muchísimo y evitas que preocuparte por estar viendo los posibles errores que salen de nuestras manos, obvio también tienes que poner de tu parte al momento de generar algún código de status distinto a 200. pero con esta explicación es una buena base para poder ir empezando poco a poco y tener más control en tus sistemas. @hdeleonnet estupendo video, muchas gracias por tu forma de enseñar se agradece!

    • @beamerboy7754
      @beamerboy7754 4 месяца назад

      Exacto, yo utilizo muchísimo los try catch en Laravel para los métodos de consultas de eloquent, que de otro modo serían casi imposibles de detectar

  • @ciberiori
    @ciberiori 4 месяца назад +1

    Hola , muy bueno el video , la forma evolucionada de este concepto en programacion funcional son las llamadas monadas , que son tipos que envuelven otros tipos , como el optional o maybe en algunos lenguajes de programacion , implementan metodos como bind , map y flatmap para acceder al valor.

  • @atrox7329
    @atrox7329 4 месяца назад +1

    Me encanta la librería de language common por el result que maneja en c#

  • @luiscaraballo2815
    @luiscaraballo2815 4 месяца назад +1

    ñaaaaa Midu Rules!

  • @Lajy-Enterprise
    @Lajy-Enterprise 4 месяца назад +2

    Épico el video, un saludo.! ahora excepcionalmente toca de ver como lo aplico en PHP 😅

  • @maisakurajima1886
    @maisakurajima1886 4 месяца назад +1

    Excelente para mejorar la logica

  • @jnmldo
    @jnmldo 4 месяца назад +2

    Muy interesante el result pattern. Muchas gracias!

  • @yoynootro
    @yoynootro 4 месяца назад +1

    ...jajajajja... "[...] que JavaScript apesta!" Me haz hecho dia. Te adoro!
    Muchas veces escucho tus tutoriales para reirme de tus ocurrencias.
    Un abrazote!

  • @jairofernandez9920
    @jairofernandez9920 4 месяца назад +2

    gracias por el contenido, muy bueno, me ayudó a entender mejor en q momentos debo o no aplicar un try catch, y una excelente alternativa usando el result pattern, veo q esto es también aplicado en Golang

  • @luisliquin6398
    @luisliquin6398 4 месяца назад +3

    jajajjajja muy buena presentacion, saludos desde Buenos Aires

  • @AristeoIbarra
    @AristeoIbarra 4 месяца назад

    Este patrón es muy interesante. Es buenísimo para manejar el comportamiento del fetching. Gracias por compartir esta información, profe. Saludos!

  • @kevinalexandervirgilioroja6843
    @kevinalexandervirgilioroja6843 2 месяца назад

    gracias profe.

  • @jorgemar1469
    @jorgemar1469 4 месяца назад +1

    grande Hector siempre se aprende con tus explicaciones

  • @germannunez7282
    @germannunez7282 4 месяца назад +3

    barbaro, me encanto la clase, sencilla práctica

  • @BerlinSantos
    @BerlinSantos 4 месяца назад +1

    excelente para usar en GO

  • @atherbsc5384
    @atherbsc5384 4 месяца назад +1

    Es un patron es muy bueno, yo uso una variante con sealed class en Kotlin y agregando un tercer estado para el loading para reacionar Ui en cada estado de una manera sencilla sin tener propiedades separadas

  • @EdgarOmarLopez-pp6xc
    @EdgarOmarLopez-pp6xc 4 месяца назад +1

    Sin duda siempre tienes contenido de calidad. Hoy aprendí algo muy útil, lo implementare en java y veremos que tal me va en test coverage, pienso que me puede ayudar bastante, gracias Hector.

  • @yahi06
    @yahi06 4 месяца назад +3

    uso patter matching en elixir la verdad es algo que amo y uso mucho en todo mi código el único problema es la repetición de código lo cual puede ser un problema y aveces hay que reescribir funciones pero es un problema de skills de mi parte. me recuerda al meme "Look What They Need to Mimic a Fraction of Our Power"

  • @f.gabrielsosarozzi2661
    @f.gabrielsosarozzi2661 4 месяца назад +1

    Es curioso como estaba haciendo cosas similares en mi código, sin darme cuenta que estaba haciendo uso de un patrón.

  • @toni9305
    @toni9305 4 месяца назад +1

    Esta muy bien, imagino que lo que voy a decir es algo que ya consideraste, este comentario esta dirigido a los demas que quieran utilizar este patron, para que tengan cuidado, el unico problema que veo es que es muy facil de utilizar de manera incorrecta, cualquiera podria utilizar la propiedad Value sin revisar si tuvo exito o no y no tendria problema porque se le asigna el valor por defecto (ouch), seria bueno modificar un poco el getter de la propiedad Value para que lance una excepcion al intentar utilizar el valor cuando ha fallado aunque puede añadir un poco de overhead tal vez puede ser algo que se ponga solo en builds de depuracion

  • @jorgealarconalvarez
    @jorgealarconalvarez 4 месяца назад +1

    Amo que Go no tenga excepciones

  • @nicolasgajardo5966
    @nicolasgajardo5966 3 месяца назад

    Súper claro! Muchas gracias 😄👍🏼

  • @carlosalbertobarreralugo
    @carlosalbertobarreralugo 3 месяца назад

    Excelente!, aprendí algo nuevo para mi

  • @DiegoSasco
    @DiegoSasco 4 месяца назад +2

    Muy bueno el video, pero tengo una consulta de ejemplo, cómo se aplicaría éste patrón con una consulta sql que retorna un error? Habría que hacer una por una las evaluaciones posibles? Por ejemplo, verificar que no se pase el fk repetido o que un campo no puede ser null, etc. sería controlar muchas cosas a mano o hay una opción diferente que no estoy dando cuenta?

  • @Miguel_Castaneda
    @Miguel_Castaneda 4 месяца назад +2

    Gracias cabezón!

  • @crhistianbetetanavarro1689
    @crhistianbetetanavarro1689 3 месяца назад

    Buen video Héctor! Me recuerda mucho a Either

  • @cristiancalichio5335
    @cristiancalichio5335 4 месяца назад +2

    Muchisimas gracias Hector, siempre trayéndonos contenido nuevo de calidad y cosas que aportan mucho abrazo grande!!!

  • @AlejandroRamirez-le3vr
    @AlejandroRamirez-le3vr 4 месяца назад

    Jajajajaja 😂😂😂 la introducción estuvo súper. Me rei mucho

  • @YamilOrtega-rl9vb
    @YamilOrtega-rl9vb 4 месяца назад

    Excelente video. Tengo una aplicación api hererdada de hace años que tiene ese patrón, pero nadie me lo explico. Sería ideal si pudieses de alguna forma integrar incluso un trycatch en ese patrón para los casos excepcionales

  • @Boxccs21
    @Boxccs21 4 месяца назад

    Hola, yo estoy usando excepciones en una API porque me cree un Middleware que las captura y devuelve un json con un objeto Result muy similar al que has creado en el video. Usar excepciones es extremadamente cómodo porque se devuelve el mensaje de error al controlador sin importar la arquitectura de la app y sin tener que crear flujos complejos o controlarlos con if como el que describes arriba.
    Pero por contra, hay que lanzar y capturar la excepción que es un objeto más o menos pesado y luego convertirla en un objeto Result lo cual efectivamente es muy lento.

  • @luisdimas9
    @luisdimas9 4 месяца назад +1

    Es muy parecido a la lógica de las Monads IO

  • @MoyRomero
    @MoyRomero 4 месяца назад

    Todo esto me recuerda a las validaciones con DataNotations. Buen video bro

  • @CarlosSosa-tj9fq
    @CarlosSosa-tj9fq 4 месяца назад +1

    La libreria ErrorOr hace esto, no sabia que era un patron de diseño

  • @leviatanMX
    @leviatanMX 4 месяца назад +2

    Excelentee el dato.!

  • @ehcualquiera1377
    @ehcualquiera1377 4 месяца назад

    Hola señor Hector de Leon, usted si que es mañoso con los try/catch.

  • @emanuelmeza4290
    @emanuelmeza4290 4 месяца назад

    Muy bueno el video! Siempre estuve en esa disyuntiva con el try catch si usarlo para todo lo que puede salir mal y tomarlo como error, o controlar lo que se que puede pasar y dejar el try catch para otras situaciones. En lo personal me queda comodo manejar cualquier error por try catch (ya sea excepcional o esperado). Supongo que tambien será segun el caso. Saludos!

  • @danielvillalobos7171
    @danielvillalobos7171 3 месяца назад

    El
    Video esta muy bonito sin embargo yo utilizo esa lógica en conjunto con un objeto respuesta T que encapsula una clase T, sería interesante ver un video con el objeto respuesta

  • @rodolfotovartorres
    @rodolfotovartorres 4 месяца назад +2

    Muchas gracias guapo tu conocimiento me ha hecho mejorar como programador y sigue compartiendo este conocimiento

  • @santosmarte
    @santosmarte 4 месяца назад +2

    Primer like y primero comentario, :3 eres un crack gracias !!!

  • @andryos5145
    @andryos5145 4 месяца назад

    Como todo en la programación : según la necesidad y proyecto. Igual siempre es bueno saber las diferentes formas de tratar errores y aplicar la más optima según necesidades. Recuerda siempre considerar cuidadosamente las implicaciones y sopesar las ventajas y desventajas antes de optar cual usar

  • @locotoazul
    @locotoazul 4 месяца назад +1

    Haskell mi estimado

  • @diegodig9
    @diegodig9 4 месяца назад

    Una implementación que me gusta más y es la que uso yo en mi trabajo es que la clase Result reciba 2 genéricos, 1 para el success y otro para el error y así puedes aprovechar este patrón para cualquier caso y elegir para cada caso lo que quieres devolver no solo en caso exitoso, si no también en caso de error

  • @jpfjpfjpfjpf
    @jpfjpfjpfjpf 29 дней назад +1

    Buenas!! Pero esto no reemplaza los try catch. Si las consistencias las controlas manualmente. Un error no controlado puede terminar el programa. Si me gustó mucho como plantilla de respuesta para mejorar el manejo de errores en la aplicación. Muy buenos tus videos!!

    • @hdeleonnet
      @hdeleonnet  29 дней назад +2

      El objetivo del video es mencionar que un try catch esta hecho para cosas excepcionales, y hay errores que no lo son y esto puede controlarlos, lamentablemente no todos los lenguajes tienen Generics.

  • @christianledesma2128
    @christianledesma2128 3 месяца назад

    Me encanta aplicar result pattern. La única pega que tienes es que no es tan fácil aplicarlo como REST.
    Es decir, no tiene mucho sentido devolver una respuesta HTTP 200 cuando el Success está puesto como "false". Por lo demás, es una maravilla para unificar todas las respuestas de un sistema

    • @hdeleonnet
      @hdeleonnet  3 месяца назад +1

      No tiene nada que ver un 200 con un success, en todo caso devolverías un 400

    • @isahirzavalamiranda7886
      @isahirzavalamiranda7886 3 месяца назад

      supongo que con el if de IsSucess puedes decidir dónde retornar 200 y dónde retornar 400, etc incluso ir más allá y agregarle el StatusCode a la clase Result

  • @rofernandez3535
    @rofernandez3535 4 месяца назад +1

    Entonces si hay una situación excepcional dejamos que el try catch lo meneje?

  • @JoseAlvaradoo
    @JoseAlvaradoo 4 месяца назад

    Gracias Hector of Lion 🦁🔥

  • @DestroyWolves
    @DestroyWolves 4 месяца назад +1

    Como entraría un Result con una transacción y su rollback por ejemplo

  • @AndresLobaton
    @AndresLobaton 4 месяца назад

    Que interesante, muchas gracias

  • @brayangomez4935
    @brayangomez4935 4 месяца назад +1

    Que buen tema gracias por el vídeo mi gordo bello

  • @eljoe182
    @eljoe182 3 месяца назад

    Puedes dar un ejemplo pero esta vez en JavaScript? 😘

  • @adolfomartin5456
    @adolfomartin5456 4 месяца назад

    Creo que ha faltado hablar del encadenamiento de funciones (programación funcional) con ejemplo sobre ello. Por ejemplo, en JavaScript se puede ver fetch.then().then().then().catch() y el catch se aplica a todos los then ya que en los then se usa este patrón.

  • @lara97196516
    @lara97196516 4 месяца назад +2

    Entonces mijo. ¿Cuando vas a realizar un video de un proyecto real en Laravel con arquitectura hexagonal?

  • @wilfredorosario8750
    @wilfredorosario8750 4 месяца назад

    Hola Héctor muy bueno tu video, podrías hacer un video probando el ide idx.dev para programación backend.
    Gran trabajo mate

  • @OscarCedano
    @OscarCedano 4 месяца назад

    Muy buen video, de lo mejor! Sigue así.

  • @luceroemmanueling
    @luceroemmanueling 4 месяца назад

    muchas gracias por el video

  • @asismelgarejo
    @asismelgarejo 2 месяца назад +1

    Golang lo trae por defecto

  • @alicehope9231
    @alicehope9231 4 месяца назад

    Lo intentare replicar en Java apoyandome en Gemini

  • @rafaozr
    @rafaozr 4 месяца назад

    Hola me parece interesante ese patron, siento que Go lo usa por defecto, pero mi problema con el es como evitar que la catidad de ifs (ya sea anidados o no) crezca rapidamente?, algun consejo para este problema?

  • @jeancarlosluciano9211
    @jeancarlosluciano9211 4 месяца назад +2

    Hector esto me acuerda cuando usan un try catch en un fetching y cree que le va avalidar hasta cuando la contraseña es incorrecta😅

  • @pablomagnavachi2961
    @pablomagnavachi2961 4 месяца назад

    Muy bueenoo, nunca me gustaron los ty catch! sabés si se usa en java también?

  • @unicronos7
    @unicronos7 4 месяца назад

    Genial gracias

  • @daniveloper
    @daniveloper 4 месяца назад

    Pero a fin de cuentas al trabajar con apis, si sucede algo ya ahora sí tendrías que exponer en la petición el error, si estás debuggueando, es más legible identificar las peticiones que te marcan error, sino tendrías que ir de una en una para verificar cuál es el que no fue exitoso correctamente. Esto decae en tener un middleware que resuelva el result pattern. De igual forma es más sencillo que el front lea los códigos de errores mediante un middleware si tiene directamente la falla del error.

    • @hdeleonnet
      @hdeleonnet  4 месяца назад +1

      Error != Excepción

    • @daniveloper
      @daniveloper 4 месяца назад

      @@hdeleonnet claro, pero me refiero a que es raro regresar una petición en un api que diga que terminó con estus 200, pero no fue exitoso

  • @sebasContreras-em6np
    @sebasContreras-em6np 4 месяца назад

    Genial video, tengo una duda. En caso ocurra un error inesperado, como se puede controlar sin try catch.

  • @lorddesert
    @lorddesert 4 месяца назад

    Buen video hector!

  • @Merlo-q1c
    @Merlo-q1c 4 месяца назад

    ah Carai esto es lo que tienes que hacer en golang por defecto, porque no hay try catch, interesante, el mismo patron estaba usando en php con laravel, asi que se llama "result Pattern" muchas gracias

  • @CarlosMay-t8h
    @CarlosMay-t8h 3 месяца назад

    El macho! jajaja

  • @MagnusRazer
    @MagnusRazer 4 месяца назад

    La clase Result generalmente se utiliza para encapsular el resultado de una operación que puede tener éxito o fallar PERO no es un patron como Factory u Observer.

    • @hdeleonnet
      @hdeleonnet  4 месяца назад

      Hace años que los patrones de diseño dejaron de ser 23

    • @MagnusRazer
      @MagnusRazer 4 месяца назад

      ​@@hdeleonnet Pero no es un patron en el sentido tradicional, es una clase lo que usas. Te concedo que es una practica util , que resuelve problemas y maneja errores, pero hasta ahi.

  • @JuanPerez-qh7es
    @JuanPerez-qh7es 4 месяца назад +1

    Existe alguna aplicación que uno pueda programar con un celular?

  • @emiliowildberger7151
    @emiliowildberger7151 4 месяца назад

    Hector me gusta pero me asusta, a todo este rollo como le manejamos a CancellationTokenSource

  • @HewerthVengeance
    @HewerthVengeance 4 месяца назад

    Un crack!

  • @adokana_
    @adokana_ 4 месяца назад

    buen vídeo

  • @hazlotumismo1419
    @hazlotumismo1419 4 месяца назад

    Hola, pero estas validando errores conocidos por ti como programador, como validas un error que no sabes que va a suceder o retornar? Digo usando el exception del try catch, pero un ejemplo estaria muy bien.

  • @luisalbertoseguraavalos2993
    @luisalbertoseguraavalos2993 3 месяца назад

    Es lo que siempre hago en mis códigos, vengo de C y allí es lo que hay, pero ¿Cómo implementarías en la función Read un File.Move si puede dar excepción la propia API de .NET?. Hace poco me paso siguiente, necesitaba mover un fichero y yo comprobaba los permisos
    FileIOPermission filePermissions = new FileIOPermission(FileIOPermissionAccess.Read |FileIOPermissionAccess.Write, source);
    filePermissions.AddPathList(FileIOPermissionAccess.Read | FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, target);
    El caso es que no me devolvía error, podía leer, pero al llamar a File.Move daba una excepción WindowsInternal.
    La propia función de .net Move hace la misma comprobación, pero al llamar a la función de C++ interna de move daba el fallo, en ese caso no se me ocurre como hacerlo sin try-catch.

  • @martillonegro429
    @martillonegro429 4 месяца назад

    Bro..busco un programador que me haga un proyecto y estaré pegando es claro no...ponte en contacto con migo para hablar del tema

  • @jorgeduran1886
    @jorgeduran1886 4 месяца назад

    Cuanto tiempo me tomaria aprender c# si soy desarrollador backend en python y node ?, muy buen video por cierto me encanto 😅

    • @hdeleonnet
      @hdeleonnet  4 месяца назад +1

      828266378282636728837373828 años

    • @jorgeduran1886
      @jorgeduran1886 4 месяца назад

      ​@@hdeleonnet😂😂 la mejor respuesta

  • @alfonsobaqueiro
    @alfonsobaqueiro 3 месяца назад

    Muchas definiciones en los lenguajes de programación son incluso hasta arbitrarias, por ejemplo, se demonizo la sentencia GOTO en favor de las estructuras de control condicionales y de loop, sin embargo posteriormente introducieron el try-catch que no es otra cosa que un GOTO disfrazado.
    Es un tanto ridiculo que demonizaran al GOTO, ya que a final de cuentas todo se implementa con instruciones JUMP en el nivel de las instrucciones del CPU, o sea GOTO. Todo gran poder es una gran responsabilidad, y este es un ejemplo concreto donde cedieron el uso de ese poder al compilador y consideraron al programador muy tonto para poder utilizarlo.

  • @josepaez1630
    @josepaez1630 4 месяца назад +41

    es que javascript apesta wn jajaja, midudev lo sabe pero igual si tenemos chamba tenemos que usarlo, ni hablar de php y uso php a diario.

    • @calvarezp
      @calvarezp 4 месяца назад +2

      Por eso llegó Typescript para amortiguar la cagada de JS 😂, Aguante C#

    • @BenitoCa
      @BenitoCa 4 месяца назад +2

      Javascript apesta solo para los júnior, a mi gustan todos los lenguajes todos tienen ventajas y desventajas, a veces cuando no necesitas que tus datos estén fuertemente tipados por ejemplo cuando interactuas con apis externas que no sabes que tipos de datos te devuelve los lenguajes no tipados son los reyes yo programo en todos.

    • @tsyf1
      @tsyf1 3 месяца назад

      Para ser judto, las nuevas versiones de PHP tienen mejores funcionalidades que Javascript. Lamentablemente nadie las usa y la mayoría de las codebases están hechas en 5.4 y/o sin ninguna semblanza de orden. :')
      Y uno cuando trabaja tiene que mantener esas codebases legacy :')

  • @mlosail3
    @mlosail3 3 месяца назад +1

    Aprendí como se llama ese patrón, porque lo venía usando en golang y no sabía que tenia nombre

  • @alonsojl-12
    @alonsojl-12 4 месяца назад

    Asi es la filosofía de Go.

  • @WotansVolks
    @WotansVolks 4 месяца назад

    Tremendo Hector!, yo utilizo este patrón muy útil en mis proyectos, pero te quería consultar, por ejemplo en mi caso uso el try catch en situaciones donde mi repositorio falla en la ejecución a base, dandome como resultante una SQLException , para lo cual tengo un evaluador para ciertos casos como por ejemplo:
    if (ex.Number == 2627 || ex.Number == 2628)
    {
    return new ResultObject(HttpStatusCode.Conflict, data: "Unique constraint conflict error");
    }
    en estos casos, es una buena implementación tanto del patrón result como del try catch? o existe otra alternativa?.
    Abrazo master!

    • @hdeleonnet
      @hdeleonnet  4 месяца назад +2

      La excepción debe ser dejada en donde nosotros no podemos controlar que pase algo, como en tu caso, algo ajeno a ti no lo controlas, esta bien una excepción

    • @WotansVolks
      @WotansVolks 4 месяца назад +1

      @@hdeleonnet Muchisimas gracias!

  • @frenteradic4l123
    @frenteradic4l123 4 месяца назад

    Para operaciones asíncronas es mejor el try catch

    • @hdeleonnet
      @hdeleonnet  4 месяца назад +1

      Uy no, vas a desbordar la memoria.

    • @frenteradic4l123
      @frenteradic4l123 4 месяца назад +1

      @@hdeleonnet una duda que me surge al usar el patrón result, en el que caso que este haciendo una llamada a un endpoint y por algún motivo se cae la conexión, como atraparía ese error con el patrón result? Como haría con el patrón result para evitar que ante cualquier inconveniente no me tumbe el servicio? Eso es algo que controla el try catch y algo que no veo que pueda hacer el result.

  • @JulioCampoSwork
    @JulioCampoSwork 4 месяца назад

    Chat-GPT me dijo que las mejoras practicas es con try catch, a quien le hago caso? al poderosisisisisismo chat-gpt o le hago caso al cabezón de las cervezas?

    • @hdeleonnet
      @hdeleonnet  4 месяца назад +1

      Ya he demostrado como se colapsan los sistemas con excesivos try catch, hacer caso al chatgpt

    • @ricardoangelesgomez8667
      @ricardoangelesgomez8667 4 месяца назад +1

      Quizás puedas investigar cómo los try/catch están implementados en tu lenguaje favorito... en casi todos es lo mismo, pero algunos implementan "artificios" para poder compensar de manera más "amable" las afectaciones cuando una excepción ocurre.
      Hay un refrán que aplica muy bien aquí; más vale prevenir que remediar... quizás antes de ejecutar ese código super critico convenga hacer todas las validaciones pertinentes, de esa manera acotas mejor las posibles excepciones, para que realmente ese error sea excepcional: algo que no tenías forma de prevenir, y en el catch tener una rutina para revertir todo.

    • @JulioCampoSwork
      @JulioCampoSwork 4 месяца назад

      @@hdeleonnet chatgpt es nuestro pastor
      pd: Fue puro sarcasmo

  • @cesarloyo1747
    @cesarloyo1747 4 месяца назад

    err != nil supremacy

  • @ElErizoDeInternet
    @ElErizoDeInternet 4 месяца назад

    Si pero si en un proyecto usas muchas librerías o APIs que tienen códigos de excepción prediseñados, para aplicar el patrón Result se deben picar a mano uno por uno cada uno de los casos de error. La ejecución es más rápida pero el código se puede volver muy largo e innecesariamente verboso. Mucho trabajo para poca recompensa. Creo que este patron es adecuado para aplicaciones pequeñas donde no existan muchos errores o, si de verdad la velocidad es un problema y la lógica no se puede optimizar mejor que hay que meterse hasta "tan" bajo nivel.

    • @hdeleonnet
      @hdeleonnet  4 месяца назад

      Pero que dices, si todo endpoint Http usa esto. Nadie ha dicho que no se usen Excepciones. Se dijo que no las usen para todo. Cuando hagas un sistema grande y que sea utilizado por millones verás como las Excepciones matan tu cpu