浏览器在控制台报的错误,如何捕获?触发机制是什么?

2019-10-13 21:29:08 +08:00
 chenliangngng

代码:

try{

document.exitFullscreen()

}

catch(err){

console.log(123)

}

如上,如果 document 没有进入全屏,chrome 会在控制台报 error,但是不会进 catch 线。 这种报错仅仅是浏览器告知开发者的,而不能用于捕获的吗?

2453 次点击
所在节点    程序员
10 条回复
momocraft
2019-10-13 21:32:10 +08:00
你看了 exitFullscreen 的文檔嗎?
codeduan
2019-10-13 21:37:37 +08:00
document.exitFullscreen() 返回了一个 promise,你可以用 promise 的 catch 方法来捕获错误,或者使用 async 函数,再在 async 里使用 try catch 语句。
codeduan
2019-10-13 21:39:08 +08:00
document.exitFullscreen().catch(() => {// error handle}) 就能捕获了。
chenliangngng
2019-10-13 21:39:30 +08:00
@momocraft 我比较关心的是浏览器对这种情况的处理和异常机制,exitFullscreen 只是一个例子
godoway
2019-10-13 21:45:20 +08:00
@chenliangngng 异步函数 try catch 不了,请在 promise.catch 处理或者包装成能挂起的 async 函数。
chenliangngng
2019-10-13 21:46:57 +08:00
@codeduan 才看了资料 try catch 只能捕获同步的异常,意思是 try catch 去捕获的这种异步异常,是失效的?
godoway
2019-10-13 22:01:04 +08:00
@chenliangngng 如果是多线程异步就能很好理解了,异常发生在另外一条线程上,所以调用处无法获取异常,因为上下文不同。
codehz
2019-10-13 22:02:55 +08:00
这样,你直接在整个 try catch 块后面加一个 console.log 就知道啥意思了
在 exitFullscreen 后面也加一个(
imyxz
2019-10-14 08:35:10 +08:00
@chenliangngng 你可以改造外面这个函数为 async 函数,调用的时候变成 await document.exitFullScreen(),一样可以用 try catch。。。
rioshikelong121
2019-10-14 12:29:01 +08:00
摸鱼居然学习到了新知识,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/608936

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX