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

310
Views
¿Cómo atrapo una DOMException de audio causada por un archivo que no se puede reproducir?

Si trato de reproducir un archivo de audio que no existe (por ejemplo, el archivo aún no se ha descargado) como este:

 audio_object = new Audio("Non_Existing_Audio_File.mp3"); audio_object.play();

Yo obtengo:

 Uncaught (in promise) DOMException: The media resource indicated by the src attribute or assigned media provider object was not suitable.

Eso está bien, pero ¿cómo puedo detectar ese error? Si hago un intento/captura, esto es lo que sucede:

 function playAudioWithTryCatch() { try { audio_object.play(); //Result: Uncaught (in promise) DOMException: The media resource indicated by the src attribute or assigned media provider object was not suitable. } catch (error) { // We never get here: console.error("Audio play failed",error); } }

Entonces, con try/catch, nunca llego al bloque catch, solo aparece el mismo mensaje de error no controlado cuando se llama al método de reproducción.

Si trato de usar una Promesa obtengo:

 function playAudioWithPromise(){ let myPromise = new Promise(function(resolve, reject) { if (E2.play()) { resolve("OK"); } else { reject("Error"); } }); myPromise.then( result => console.log(result), error => console.log(error) ); //Result: Uncaught (in promise) DOMException: The media resource indicated by the src attribute or assigned media provider object was not suitable. //And "OK" (console log) }

Nuevamente, el error no se detecta, similar al anterior.

¿Alguien puede decirme cómo detectar/manejar este error antes de que se envíe a la consola?

Sé que puedo usar la propiedad readyState de medios, pero eso no ayuda en este caso, ya que estoy tratando de solucionar un problema de Safari en el que readyState no se muestra listo hasta que un usuario haya iniciado todos y cada uno de los métodos de reproducción de archivos de audio. lo cual no es práctico, así que no puedo usar eso aquí.

¡Cualquier ayuda apreciada!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

audio_object.play() devuelve una promesa. Atrapa el error con un .catch() como una promesa normal. Lo descubrí probando el siguiente código e inspeccionando las variables en mi navegador:

 function start() { audio_object = new Audio("Non_Existing_Audio_File.mp3"); window.playResult = audio_object.play(); playResult.catch(e => { window.playResultError = e; }) } start();
about 4 years ago · Juan Pablo Isaza 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!