web-dev-qa-db-ja.com

ChromeでDOMExceptionをキャッチする方法は?

このエラーが発生します:

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

chromeで次のコードを実行すると:

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

デスクトップChromeは方向ロックをサポートしていないため、エラーがスローされているという事実が予想されます。コンソールを散らかさないようにエラーをキャッチしたいのですが、ラップしますtry...catchブロックが機能していないようです。

なぜ私はそれを捕まえられないのですか?私は何かが足りないのですか?

9
Jack Senechal

screen.orientation.lock('portrait');は実際にはエラーをスローしている Promise を返すため、try/catchはここでは機能しません。エラーのこの部分は、Promiseで例外がスローされることを示しています。

Uncaught(in promise)DOMException:lockOrientation()はこのデバイスでは使用できません。

例外を処理するために、catchコールバックを添付できます。

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