How to catch DOMException in Chrome?

Jack Senechal picture Jack Senechal · Jul 20, 2015 · Viewed 22k times · Source

I get this error:

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

when I run the following code in Chrome:

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

The fact that the error is being thrown is expected, since Desktop Chrome doesn't support orientation locking. I'd like to catch the error so it doesn't litter the console, but wrapping it in a try...catch block doesn't seem to work.

Why can't I catch it? Am I missing something?

Answer

Alexander O'Mara picture Alexander O'Mara · Jul 20, 2015

try/catch does not work here, because screen.orientation.lock('portrait'); actually returns a Promise which is throwing the error. This part of the error shows the exception is thrown in the promise.

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

To handle the exception, you can attach a catch callback.

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