
代码:
try{
document.exitFullscreen()
}
catch(err){
console.log(123)
}
如上,如果 document 没有进入全屏,chrome 会在控制台报 error,但是不会进 catch 线。 这种报错仅仅是浏览器告知开发者的,而不能用于捕获的吗?
1 momocraft 2019 年 10 月 13 日 你看了 exitFullscreen 的文? |
2 codeduan 2019 年 10 月 13 日 document.exitFullscreen() 返回了一个 promise,你可以用 promise 的 catch 方法来捕获错误,或者使用 async 函数,再在 async 里使用 try catch 语句。 |
3 codeduan 2019 年 10 月 13 日 document.exitFullscreen().catch(() => {// error handle}) 就能捕获了。 |
4 chenliangngng OP @momocraft 我比较关心的是浏览器对这种情况的处理和异常机制,exitFullscreen 只是一个例子 |
5 godoway 2019 年 10 月 13 日 via Android @chenliangngng 异步函数 try catch 不了,请在 promise.catch 处理或者包装成能挂起的 async 函数。 |
6 chenliangngng OP @codeduan 才看了资料 try catch 只能捕获同步的异常,意思是 try catch 去捕获的这种异步异常,是失效的? |
7 godoway 2019 年 10 月 13 日 via Android @chenliangngng 如果是多线程异步就能很好理解了,异常发生在另外一条线程上,所以调用处无法获取异常,因为上下文不同。 |
8 codehz 2019 年 10 月 13 日 via Android 这样,你直接在整个 try catch 块后面加一个 console.log 就知道啥意思了 在 exitFullscreen 后面也加一个( |
9 imyxz 2019 年 10 月 14 日 via Android @chenliangngng 你可以改造外面这个函数为 async 函数,调用的时候变成 await document.exitFullScreen(),一样可以用 try catch。。。 |
10 rioshikelong121 2019 年 10 月 14 日 摸鱼居然学习到了新知识, |