• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chenliangngng
V2EX  ›  程序员

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

  •  
  •   chenliangngng · Oct 13, 2019 · 3188 views
    This topic created in 2414 days ago, the information mentioned may be changed or developed.

    代码:

    try{

    document.exitFullscreen()

    }

    catch(err){

    console.log(123)

    }

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

    10 replies    2019-10-14 12:29:01 +08:00
    momocraft
        1
    momocraft  
       Oct 13, 2019   ❤️ 1
    你看了 exitFullscreen 的文檔嗎?
    codeduan
        2
    codeduan  
       Oct 13, 2019   ❤️ 1
    document.exitFullscreen() 返回了一个 promise,你可以用 promise 的 catch 方法来捕获错误,或者使用 async 函数,再在 async 里使用 try catch 语句。
    codeduan
        3
    codeduan  
       Oct 13, 2019
    document.exitFullscreen().catch(() => {// error handle}) 就能捕获了。
    chenliangngng
        4
    chenliangngng  
    OP
       Oct 13, 2019
    @momocraft 我比较关心的是浏览器对这种情况的处理和异常机制,exitFullscreen 只是一个例子
    godoway
        5
    godoway  
       Oct 13, 2019 via Android   ❤️ 2
    @chenliangngng 异步函数 try catch 不了,请在 promise.catch 处理或者包装成能挂起的 async 函数。
    chenliangngng
        6
    chenliangngng  
    OP
       Oct 13, 2019
    @codeduan 才看了资料 try catch 只能捕获同步的异常,意思是 try catch 去捕获的这种异步异常,是失效的?
    godoway
        7
    godoway  
       Oct 13, 2019 via Android
    @chenliangngng 如果是多线程异步就能很好理解了,异常发生在另外一条线程上,所以调用处无法获取异常,因为上下文不同。
    codehz
        8
    codehz  
       Oct 13, 2019 via Android
    这样,你直接在整个 try catch 块后面加一个 console.log 就知道啥意思了
    在 exitFullscreen 后面也加一个(
    imyxz
        9
    imyxz  
       Oct 14, 2019 via Android
    @chenliangngng 你可以改造外面这个函数为 async 函数,调用的时候变成 await document.exitFullScreen(),一样可以用 try catch。。。
    rioshikelong121
        10
    rioshikelong121  
       Oct 14, 2019
    摸鱼居然学习到了新知识,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2869 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 14:38 · PVG 22:38 · LAX 07:38 · JFK 10:38
    ♥ Do have faith in what you're doing.