Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

144
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!