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

311
Vistas
¿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 Respuestas
Responde la pregunta

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 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