5

otrzymuję ten błąd:Jak wychwycić wyjątek DOMException w przeglądarce Chrome?

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

kiedy uruchomić następujący kod w Chrome:

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

Fakt, że błąd jest wyrzucane jest z oczekiwaniami, ponieważ pulpitu Chrome nie obsługuje blokowania orientacji . Chciałbym złapać błąd, aby nie zaśmiecać konsoli, ale zawijanie go w bloku try...catch wydaje się nie działać.

Dlaczego nie mogę go złapać? Czy czegoś brakuje?

Odpowiedz

10

try/catch nie działa tutaj, ponieważ screen.orientation.lock('portrait'); faktycznie zwraca wartość Promise, która powoduje błąd. Ta część błędu pokazuje wyjątek wyrzucony w obietnicy.

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

Aby obsłużyć wyjątek, można dołączyć wywołanie zwrotne catch.

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

Właśnie tego potrzebowałem, dzięki! Ponieważ inne implementacje zwracają true/false, a Chrome zwraca obietnicę, napisałem o tym, jak połączyć różne implementacje w jedną funkcję. https://gist.github.com/jacksenechal/67315945593d452407ff –

Powiązane problemy