5

ottengo questo errore:Come catturare DOMException in Chrome?

Uncaught (in promise) DOMException: lockOrientation() is not available on this device. 
    code: 9 
    message: "lockOrientation() is not available on this device." 
    name: "NotSupportedError" 

quando si esegue il seguente codice in Chrome:

try { 
    screen.orientation.lock('portrait'); 
} catch (error) { 
    // whatever 
} 

Il fatto che l'errore viene gettata è previsto, dal momento che il desktop Chrome non supporta il blocco orientamento . Mi piacerebbe intercettare l'errore in modo da non sporcare la console, ma il suo blocco in un blocco try...catch non sembra funzionare.

Perché non riesco a prenderlo? Mi sto perdendo qualcosa?

risposta

10

try/catch non funziona qui, perché screen.orientation.lock('portrait'); restituisce effettivamente uno Promise che genera l'errore. Questa parte dell'errore mostra che l'eccezione è stata gettata nella promessa.

Uncaught (in promise) DOMException: lockOrientation() is not available on this device.

per gestire l'eccezione, è possibile allegare una richiamata catch.

screen.orientation.lock('portrait').catch(function() { 
    // whatever 
}); 
+1

Questo è proprio quello di cui avevo bisogno, grazie! Poiché le altre implementazioni restituiscono true/false e Chrome restituisce una promessa, ho scritto una sintesi su come combinare le varie implementazioni in un'unica funzione. https://gist.github.com/jacksenechal/67315945593d452407ff –

Problemi correlati