Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

166
Vistas
¿Cómo detener la ejecución de un programa con "lanzar" en javascript?

Estoy reanudando los estudios de javascript ahora y me encontré con un problema. Tengo una clase Customer que recibe datos de clientes en el constructor y los valida antes de asignarlos a sus respectivas propiedades. Cuando el número de teléfono es incorrecto, se lanza una excepción que a su vez debe detener la ejecución de todo el programa, sin embargo, ese es el problema. Estoy lanzando la excepción y tratándola con try/catch pero el programa continúa de todos modos, aquí está el código:

 // Customer class import { Library } from './Library.js'; import { books } from './books.js'; import chalk from 'chalk'; export class Customer { #name; #birthdate; #email; #phone; #code; constructor(name, birthdate, email, phone) { this.#name = name; this.#birthdate = birthdate; this.#email = email; this.#phone = this.#validatePhone(phone); this.rented = []; this.#code = Math.trunc(Math.random() * 99999); // MUST BE READABLE, ONLY! } get name() { return this.#name; } get birthdate() { return this.#birthdate; } get email() { return this.#email; } get phone() { return this.#phone; } set name(name) { this.#name = name; } set birthdate(birthdate) { this.#birthdate = birthdate; } set email(email) { this.#email = email; } set phone(phone) { this.#phone = phone; } async rentBoook(title, days) { const search = await Library.searchBook(title); if(search.length === 0) throw 'This book doesn\'t exist!'; return await Library.rentBook('O Ar', this, days); } #validatePhone(phone) { try { const pattern = /(\(?[0-9]{2}\)?)\s?([0-9]{5})-?([0-9]{4})/; if(!pattern.test(phone)) throw 'Invalid phone number!'; return phone; }catch(err) { console.log(chalk.red(err)); } } }
 // Index import chalk from 'chalk'; import { Customer } from './Customer.js'; const customer = new Customer('John Doe', '20-04-04', 'r@r.com', '(99) 9999-99999'); customer.rentBoook('O Ar', 7) .then(r => console.log(chalk.green('Book rented with success!'))) .catch(err => console.log(chalk.red(err)));
 // Output "Invalid phone number!" "Book rented with success!"
about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

La validación del teléfono debe manejarse en el método rentBook , ya que la validación no se manejó dentro del rentBook y sucedió para la asignación de accesorios #phone (#phone se volverá indefinido ), ambos métodos se ejecutan independientemente uno del otro.

Para este caso, obtendrá el resultado esperado, cuando la validación se realice dentro de rentBook antes de Library.search

 async rentBoook(title, days) { .... validatePhone() ... }

elimine try catch en el método de validación de teléfono y use try..catch en rentBook si es necesario

Espero que esto ayude

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda