首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

try..catch 不能捕获的错误有哪些?注意事项又有哪些?

我们还会讲一下 JS 中内置的错误对象(Error, SyntaxError, ReferenceError等)以及如何定义自定义错误。...try块包含我们需要检查的代码 关键字throw用于抛出自定义错误 catch块处理捕获的错误 finally 块是最终结果无论如何,都会执行的一个块,可以在这个块里面做一些需要善后的事情 1.1 try...JS 代码,例如try块中的以下代码在语法上是错误的,但它不会被catch块捕获。...异步代码中的错误处理 对于异步代码的错误处理可以Promise和async await。...2.1 Promise 中的 then..catch 我们可以使用then()和catch()链接多个 Promises,以处理链中单个 Promise 的错误,如下所示: Promise.resolve

2.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    前端魔法堂——异常不仅仅是trycatch

    一.异常还是错误?它会如何影响我们的代码?  ... // 1.当前代码块将作为一个任务压入任务队列中,JavaScript线程会不断地从任务队列中提取任务执行; // 2.当任务执行过程中报异常,且异常没有捕获处理,则会一路沿着调用栈从顶到底抛出...Error} error - Error实例,Safari和IE10中没有这个实参  这时我们就可以通过它捕获除了try/catch能捕获的异常外,还可以捕获setTimeout等的异步代码异常,语法错误...Promise实例的初始化状态是pending,而发生异常时则为rejected,而导致状态从pending转变为rejected的操作有 调用Promise.reject类方法 在工厂方法中调用reject...总结  对异常和如何捕获异常仅仅是前端智能监控中的一小撮知识点,敬请期待后续另一小撮知识点《前端魔法堂——调用栈,异常实例中的宝藏》吧:D 参考 https://developer.mozilla.org

    1.5K70

    前端魔法堂——异常不仅仅是trycatch

    一.异常还是错误?它会如何影响我们的代码?  ... // 1.当前代码块将作为一个任务压入任务队列中,JavaScript线程会不断地从任务队列中提取任务执行; // 2.当任务执行过程中报异常,且异常没有捕获处理,则会一路沿着调用栈从顶到底抛出...Error} error - Error实例,Safari和IE10中没有这个实参  这时我们就可以通过它捕获除了try/catch能捕获的异常外,还可以捕获setTimeout等的异步代码异常,语法错误...Promise实例的初始化状态是pending,而发生异常时则为rejected,而导致状态从pending转变为rejected的操作有 调用Promise.reject类方法 在工厂方法中调用reject...总结  对异常和如何捕获异常仅仅是前端智能监控中的一小撮知识点,敬请期待后续另一小撮知识点《前端魔法堂——调用栈,异常实例中的宝藏》吧:D  尊重原创,转载请注明来自 ^_^肥仔John 参考 https

    1.1K30

    一篇文章教你如何捕获前端错误

    一般对页面的监控包含页面性能、页面错误以及用户行为路径获取上报等。 而本文将重点关注其中的错误部分,主要介绍一下常见的错误类型以及如何对它们进行捕获并上报。...3、未处理的promise错误 未使用catch捕获的promise错误,往往都会存在比较大的风险。而编码时有可能覆盖的不够全面,因此有必要监控未处理的promise错误并进行上报。...像axios和jQuery等库就是在xhr上的封装,而有些情况也可能会使用原生的fetch,因此对这两种情况都要进行捕获。 e.g: 下图是xhr请求接口返回400时捕获后的上报数据: ?...('error')都能捕获,但是window.onerror含有详细的error堆栈信息,存在error.stack中,所以我们选择使用onerror的方式对js运行时错误进行捕获。...出于安全考虑,浏览器会刻意隐藏其他域的 JS 文件抛出的具体错误信息,这样做可以有效避免敏感信息无意中被不受控制的第三方脚本捕获。

    3.8K40

    如何优雅处理前端异常?

    总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...无法捕获语法错误; 到这里基本就清晰了:在实际的使用过程中,onerror 主要是来捕获预料之外的错误,而 try-catch 则是用来在可预见情况下监控特定的错误,两者结合使用更加高效。...没有写 catch 的 Promise 中抛出的错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 中不要忘记写 catch 处理抛出的异常。...解决方案:为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听Uncaught Promise Error。...嗯,事实证明,也是会被正常捕获到的 所以,正如我们上面所说,为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听 Uncaught Promise

    1.7K20

    如何优雅处理前端异常?

    总结一下,大概如下: 1、JS 语法错误、代码异常 2、AJAX 请求异常 3、静态资源加载异常 4、Promise 异常 5、Iframe 异常 6、跨域 Script error 7、崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...无法捕获语法错误; 到这里基本就清晰了:在实际的使用过程中,onerror 主要是来捕获预料之外的错误,而 try-catch 则是用来在可预见情况下监控特定的错误,两者结合使用更加高效。...没有写 catch 的 Promise 中抛出的错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 中不要忘记写 catch 处理抛出的异常。...解决方案: 为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听Uncaught Promise Error。...所以,正如我们上面所说,为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听 Uncaught Promise Error。

    2.1K30

    前端开发,如何优雅处理前端异常?

    总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...无法捕获语法错误; 到这里基本就清晰了:在实际的使用过程中,onerror 主要是来捕获预料之外的错误,而 try-catch 则是用来在可预见情况下监控特定的错误,两者结合使用更加高效。...没有写 catch 的 Promise 中抛出的错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 中不要忘记写 catch 处理抛出的异常。...解决方案:为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听Uncaught Promise Error。...所以,正如我们上面所说,为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听 Uncaught Promise Error。

    97010

    如何优雅处理前端异常?(史上最全前端异常处理方案)

    总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...无法捕获语法错误; 到这里基本就清晰了:在实际的使用过程中,onerror 主要是来捕获预料之外的错误,而 try-catch 则是用来在可预见情况下监控特定的错误,两者结合使用更加高效。...没有写 catch 的 Promise 中抛出的错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 中不要忘记写 catch 处理抛出的异常。...解决方案:为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听Uncaught Promise Error。...所以,正如我们上面所说,为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听 Uncaught Promise Error。

    3.7K10

    一篇文章教你如何捕获前端错误

    e.g: 下图是图片资源不存在时的上报数据: 3、未处理的promise错误 未使用catch捕获的promise错误,往往都会存在比较大的风险。...e.g: 下图是promise请求接口发生错误后,未进行catch时的上报数据: 4、异步请求错误(fetch与xhr) 异步错误的捕获分为两个部分:一个是传统的XMLHttpRequest,另一个是使用...像axios和jQuery等库就是在xhr上的封装,而有些情况也可能会使用原生的fetch,因此对这两种情况都要进行捕获。...出于安全考虑,浏览器会刻意隐藏其他域的 JS 文件抛出的具体错误信息,这样做可以有效避免敏感信息无意中被不受控制的第三方脚本捕获。...", "", 0, 0, undefined 可见 try catch 中的 Console 语句输出了完整的信息,但 window.onerror 中只能捕获“Script error”。

    3.3K90

    前端异常的捕获与处理

    ,捕获到错误后,我们需要思考当错误发生时: 错误是否是致命的,会不会导致其它连带错误 后续的代码逻辑还能不能继续执行,用户还能不能继续操作 是不是需要将错误信息反馈给用户,提示用户如何处理该错误 是不是需要将错误上报服务端...5.3 Promise 异常 Promise 中的异常不能被 try-catch 和 window.onerror 捕获,这时候我们就需要监听 unhandledrejection 来帮我们捕获这部分错误...为了弥补这一点,React 实现了所谓的错误边界。错误边界是 React 组件,它“捕获子组件树中的任何地方的 JavaScript 错误”,同时还记录错误并显示回退用户界面。...为例,模拟接口响应 401 的情况: // 请求 axios.get(/api/test/401") // 结果 Uncaught (in promise) Error: Request failed...Promise 错误上报信息 后续也可以单开一篇介绍介绍,如何结合开源的错误监控系统,搭建具有公司特色的监控体系。

    3.5K30

    如何优雅处理前端的异常?

    总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...: 需要注意: onerror 最好写在所有 JS 脚本的前面,否则有可能捕获不到错误; onerror 无法捕获语法错误; 到这里基本就清晰了:在实际的使用过程中,onerror 主要是来捕获预料之外的错误...没有写 catch 的 Promise 中抛出的错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 中不要忘记写 catch 处理抛出的异常。...解决方案:为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听Uncaught Promise Error。...所以,正如我们上面所说,为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听 Uncaught Promise Error。

    1.8K50

    如何用正确的姿势去高效的解决前端异常,用实践造就答案

    总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...需要注意: onerror 最好写在所有 JS 脚本的前面,否则有可能捕获不到错误; onerror 无法捕获语法错误; 到这里基本就清晰了:在实际的使用过程中,onerror 主要是来捕获预料之外的错误...没有写 catch 的 Promise 中抛出的错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 中不要忘记写 catch 处理抛出的异常。...解决方案:为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听Uncaught Promise Error。使用方式: ?...所以,正如我们上面所说,为了防止有漏掉的 Promise 异常,建议在全局增加一个对 unhandledrejection 的监听,用来全局监听 Uncaught Promise Error。

    1.1K60

    前端监控那些事

    如何使用 需要在sentry创建项目,并与你项目绑定关联(获取dsn) image.png sentry与vue项目结合中,需要用到raven(sentry官方针对vue推荐的插件) 可以使用封装好的...window.onerror(JS异常) 我们使用 window.onerror 捕获一般情况下 JS 错误的异常信息。...promise异常) onerror无法监控网络请求的异常包括图片请求失败、资源加载失败等等及promise异常,这个时候需要监听 unhandledrejection,用来全局监听 Uncaught...主要用于捕获偶现的难以捕获的异常情况,最适合处理那些我们无法控制的错误,不过大部门前端代码少依赖环境,比较少用到,用node开发后端的同学,经常会有非常多的异步调用,需要对异常作捕获处理 try {...- 只要加上百度统计的访问代码,就可以快速集成到项目中,记录页面的pv、uv 埋点模式 - 调用埋点SDK的函数,在需要埋点的业务功能上去调用接口上报埋点数据,也可使用第三方的数据统计服务商友盟等。

    1.3K30

    Thinking--异步请求函数return应不应该加await?

    在 codereview 代码中,发现了这样的两种写法。...从写法上,直观可以看到的是 写法一:返回的是执行结果(异步执行过程在 fn 函数内部) 写法二:返回的是 Promise(异步执行过程在**调用 fn **函数的方法) 我们知道,调用 async 包裹的函数也需要通过...Promise.rejct('异步操作发生错误') } } 当异步操作发生异常时,会有差异: 写法一:会返回异常信息,即执行 catch 部分 写法二:异常的捕获需要在调用的函数中处理,fn 函数中...Error: Cannot divide by 0 对于方式一,reject 的错误被成功捕获;对于方式二,reject 的错误被直接抛出了(Uncaught)。...且对错误未捕获,会导致程序终止执行。

    45610
    领券