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

JS 常见报错及异常处理办法总结

作者:FishStudy520 https://segmentfault.com/a/1190000038323321 前言 开发,有时,我们花了几个小时写的js 代码,浏览器调试一看,控制台一堆红...: "x" is not defined 含义:“x”未定义 为什么报错?...当你引用一个没有定义的变量时,抛出一个ReferenceError; 当你使用变量的时候,这个变量必须要声明,或者你可以确保它在你当前的脚本或作用域 (scope) 可用。...createXHR('http://192.168.10:8080') 异常调试及捕获 try/catch,Js处理异常的一种模式,try用于可能会发生错误的代码,catch对错误的处理。...name) throw new Error('用户名无效'); return name; } getUserName() Promise 的异常处理,Promise执行,本身自带try...

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

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

常见错误的分类 对于用户访问页面时发生的错误,主要包括以下几个类型: 1、js运行时错误 JavaScript代码在用户浏览器执行时,由于一些边界情况、本地环境的不可控等因素,可能会存在js运行时错误...3、未处理的promise错误 使用catch捕获promise错误,往往都会存在比较大的风险。而编码时有可能覆盖的不够全面,因此有必要监控未处理的promise错误并进行上报。...('error')都能捕获,但是window.onerror含有详细的error堆栈信息,存在error.stack,所以我们选择使用onerror的方式对js运行时错误进行捕获。...('error', event => (){ // 处理错误信息 }, false); // true代表捕获阶段调用,false代表冒泡阶段捕获。...", "", 0, 0, undefined (滑动查看) 可见 try catch 的 Console 语句输出了完整的信息,但 window.onerror 只能捕获“Script error”

3.6K40

面试官:用一句话描述 JS 异常是否能被 try catch 捕获到 ?

面试者:沉默 ing ………… 面试者:能捕捉到的异常必须是线程执行已经进入 try catch 但 try catch 执行完的时候抛出来的。...比如语法异常(syntaxError),因为语法异常是语法检查阶段就报错了,线程执行尚未进入 try catch 代码块,自然就无法捕获到异常。...如果是之前,或者之后,都无法捕捉异常。 敲黑板:不要死记硬背,啥可以捕获,啥不能捕获!记住这一句话,永远不会忘! Promise 没异常 相对于外部 try catch,Promise 没有异常!...核心原因是因为 Promise 执行回调中都用 try catch 包裹起来了,其中所有的异常都被内部捕获到了,并未往上抛异常。...,那么这里的 Promise 为啥能捕获到异常呢?

1.1K30

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

JS 代码,例如try块的以下代码语法上是错误的,但它不会被catch块捕获。..."); } ➤ ⓧ Uncaught SyntaxError: Invalid or unexpected token 1.2.2 try..catch 与 异步代码 同样,try..catch无法捕获异步代码引发的异常...noSuchVariable; // undefined variable }, 1000); } catch (err) { console.log("这里不会被执行"); } 捕获的...Error: Error while executing the code 这里注意两件事: 即使从try块抛出错误后,也会执行finally块 如果没有catch块,错误将不能被优雅地处理,从而导致捕获的错误...2.1 Promise 的 then..catch 我们可以使用then()和catch()链接多个 Promises,以处理链单个 Promise 的错误,如下所示: Promise.resolve

2.5K20

javaScript代码飘红报错看不懂?读完这篇文章再试试!

若要快速解决项目开发过程遇到的各种刁钻Error,首先要快速识破它的本质!而不是一味的依赖第六感去猜测,更不该盲目凭借自身的幸运值去不断尝试解决!...] 范围;界限;区间; 类; 种; token [ˈtəʊkən] 令牌;标记 try [traɪ] 尝试 throw [θrəʊ] 投;掷;抛;扔;摔;丢;猛推;使劲撞 Uncaught 捕获...常见的四种Error类型 1、ReferenceError(引用错误):使用了未定义的变量。...// 1、变量未定义便直接使用 console.log(my); // 报错:Uncaught ReferenceError: my is not defined // 翻译:my未定义 // 2、将变量赋值给一个无法被赋值的东东...•try,尽量少的包含可能出错的代码。•无法提前预知错误类型的错误,必须用try catch捕获。•finally可以省略。

5.4K20

浅析前端异常及降级处理

复制代码 2.动机 用来捕获promise代码的错误 3.范围 使用Promise.prototype.catch()我们可以方便的捕获到异常,现在我们来测试一下常见的语法错误、代码错误以及异步错误...// 捕获到的promise异常的: PromiseRejectionEvent 复制代码 注意:此段代码直接写在控制台是捕获不到promise异常的,写在html文件可正常捕获。...3.范围 很遗憾,结果并不令人满意,实际的测试过程,该方法未能捕获到异常。...错误边界渲染期间、生命周期方法和整个组件树的构造函数捕获错误。...特定的错误信息,比如错误所在的生命周期钩子 // 只 2.2.0+ 可用 } 复制代码 指定组件的渲染和观察期间捕获错误的处理函数。

1.4K10

剖析前端异常及其降级处理和防范方案

复制代码 2.动机 用来捕获promise代码的错误 3.范围 使用Promise.prototype.catch()我们可以方便的捕获到异常,现在我们来测试一下常见的语法错误、代码错误以及异步错误...// 捕获到的promise异常的: PromiseRejectionEvent 复制代码 注意:此段代码直接写在控制台是捕获不到promise异常的,写在html文件可正常捕获。...3.范围 很遗憾,结果并不令人满意,实际的测试过程,该方法未能捕获到异常。...错误边界渲染期间、生命周期方法和整个组件树的构造函数捕获错误。...特定的错误信息,比如错误所在的生命周期钩子 // 只 2.2.0+ 可用 } 复制代码 指定组件的渲染和观察期间捕获错误的处理函数。

1.1K40

【Web技术】剖析前端异常及降级处理

复制代码 2.动机 用来捕获promise代码的错误 3.范围 使用Promise.prototype.catch()我们可以方便的捕获到异常,现在我们来测试一下常见的语法错误、代码错误以及异步错误...// 捕获到的promise异常的: PromiseRejectionEvent 复制代码 注意:此段代码直接写在控制台是捕获不到promise异常的,写在html文件可正常捕获。...3.范围 很遗憾,结果并不令人满意,实际的测试过程,该方法未能捕获到异常。...错误边界渲染期间、生命周期方法和整个组件树的构造函数捕获错误。...特定的错误信息,比如错误所在的生命周期钩子 // 只 2.2.0+ 可用 } 复制代码 指定组件的渲染和观察期间捕获错误的处理函数。

1.3K10

如何及时发现网页的隐形错误

ReferenceError: 引用了未定义的变量或对象 TypeError: 类型错误 URIError: URI操作错误 SyntaxError: 语法错误 (这个错误WebIDL故意省略,保留给...,而 try-catch 则是用于可预见的情况下监控特定的错误。...().catch(cb) 优点: 可以捕获 Promise 的拒绝(失败)状态,并执行相应的错误处理逻辑 可以很方便地处理 Promise 的成功和失败回调 缺点: 无法捕获 Promise 内部的同步异常...,只能捕获Promise 对象本身的异常 无法捕获到其他异步操作的错误,例如网络请求失败等。...可以捕捉请求过程的各个阶段的错误,如请求失败、超时等 缺点: 需要编写更多的代码来处理请求细节,容易出现回调地狱。 需要手动处理跨域问题 不支持 Promise,需要使用回调函数来处理响应结果。

15600

7种你应该知道的JavaScript常见的错误

这篇文章的重点是概述我们JS开发过程可能遇到的错误类型。 1. RangeError 当数字超出允许的值范围时,将抛出此错误。...cat将返回“ cat”,而dog会引发ReferenceError,因为环境记录找不到名为dog的变量。...$ node errors errors.js:3 dog ^ ReferenceError: dog is not defined 每当我们创建或定义变量时,变量名称都会写入环境记录。...can't find it 注意:未定义的变量不会抛出ReferenceError,因为它存在于环境记录只是它的值尚未设置。 3. SyntaxError 这是我们遇到的最常见的错误。...解析期间,JS引擎捕获了此错误。 JS引擎,我们的代码经历了不同的阶段,然后才能在终端上看到运行结果。 标记化 解析 执行 标记化将源代码分解为各个单元。

2.6K10

你应该知道的7 个 JavaScript 原生错误类型

cat 将返回 “cat”,而 dog 将引发引用错误,因为环境记录找不到名称 dog。...1$ node errors 2errors.js:3 3dog 4^ReferenceError: dog is not defined 每当我们创建或定义变量时,变量名称都会写入环境记录。...当在记录中找到环境值并提取并返回值时,将以该变量的名称作为关键字环境记录进行搜索。调用尚未定义的函数。 现在,当我们创建或定义一个没有赋值的变量时。...can't find it 注意:未定义的变量不会抛出 ReferenceError,因为它在于环境记录的值尚未设置。 3. SyntaxError 这是最常见的错误。...JS 引擎解析期间捕获了这个错误。 JS 引擎,我们的代码经历了不同的阶段,然后才能在终端上看到结果。 标记化 解析 解释 标记化将代码的源分解为各个单元。

2.6K20

JavaScrip最容易犯的十大错误及其避免方法()

your name" /> 4 (unknown): Script error 当捕获的...例如,如果您在CDN上托管JavaScript代码,任何捕获的错误(冒泡到window.onerror处理程序的错误,而不是try-catch捕获)将被报告为“脚本错误”而不是包含有用的错误 信息...TypeError: Cannot read property ‘length’ 您通常会在数组中找到定义的长度,但如果初始化数组或者另一个上下文中隐藏变量名,则可能会遇到此错误。...ReferenceError: event is not defined 当您尝试访问未定义或超出当前范围的变量时,将引发此错误。 您可以Chrome浏览器轻松测试它。...如果预期类型但尚未定义,它可以警告您。即使没有Typescript,使用它们之前使用guard子句来检查对象是否未定义也是有帮助的。

11610

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

无法捕获语法错误; 到这里基本就清晰了:实际的使用过程,onerror 主要是来捕获预料之外的错误,而 try-catch 则是用来可预见情况下监控特定的错误,两者结合使用更加高效。...这些 error 事件不会向上冒泡到 window ,不过(至少 Firefox )能被单一的window.addEventListener 捕获。...六、Promise Catch promise 中使用 catch 可以非常方便的捕获到异步 error ,这个很简单。...没有写 catch 的 Promise 抛出的错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出的异常。...实际上,大多数情况下我们可以整个程序定义一个 error boundary 组件,之后就可以一直使用它了!

93910

如何优雅处理前端异常?

无法捕获语法错误; 到这里基本就清晰了:实际的使用过程,onerror 主要是来捕获预料之外的错误,而 try-catch 则是用来可预见情况下监控特定的错误,两者结合使用更加高效。...这些 error 事件不会向上冒泡到 window ,不过(至少 Firefox )能被单一的window.addEventListener 捕获。...Promise Catch promise 中使用 catch 可以非常方便的捕获到异步 error ,这个很简单。...没有写 catch 的 Promise 抛出的错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出的异常。...实际上,大多数情况下我们可以整个程序定义一个 error boundary 组件,之后就可以一直使用它了!

1.6K20
领券