Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

318
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda