Uncaught SyntaxError 未捕获的语法错误,最低级的错误,直接编译不通过。 通常情况是写错符号,比如for循环应该用分号的写了逗号,函数接受形参应该用逗号但是写了分号。...foo().then(v => console.log(v); e => console.log(e)) Uncaught ReferenceError 未捕获引用错误:Uncaught ReferenceError...: xxx is not defined 通常是使用了一个未定义的变量 console.log(a); //Uncaught ReferenceError: a is not defined a =...10 Uncaught TypeError 未捕获类型错误:Uncaught TypeError...... show是一个变量不是一个函数!...持续更新中...
作者: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...
在开发中,有时,我们花了几个小时写的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...catch
常见错误的分类 对于用户在访问页面时发生的错误,主要包括以下几个类型: 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”
面试者:沉默 ing ………… 面试者:能捕捉到的异常必须是线程执行已经进入 try catch 但 try catch 未执行完的时候抛出来的。...比如语法异常(syntaxError),因为语法异常是在语法检查阶段就报错了,线程执行尚未进入 try catch 代码块,自然就无法捕获到异常。...如果是在之前,或者之后,都无法捕捉异常。 敲黑板:不要死记硬背,啥可以捕获,啥不能捕获!记住这一句话,永远不会忘! Promise 没异常 相对于外部 try catch,Promise 没有异常!...核心原因是因为 Promise 在执行回调中都用 try catch 包裹起来了,其中所有的异常都被内部捕获到了,并未往上抛异常。...,那么这里的 Promise 为啥能捕获到异常呢?
e.g: 下图是当使用了未定义的变量"foo",导致产生js运行时错误时的上报数据: 2、资源加载错误 这里的静态资源包括js、css以及image等。...e.g: 下图是图片资源不存在时的上报数据: 3、未处理的promise错误 未使用catch捕获的promise错误,往往都会存在比较大的风险。...('error', event => (){ // 处理错误信息 }, false); // true代表在捕获阶段调用,false代表在冒泡阶段捕获。...这些error事件不会向上冒泡到window,不过能被window.addEventListener在捕获阶段捕获。...", "", 0, 0, undefined 可见 try catch 中的 Console 语句输出了完整的信息,但 window.onerror 中只能捕获“Script error”。
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
若要快速解决项目开发过程中遇到的各种刁钻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可以省略。
cat将返回"cat",而dog将引发参考错误,因为在环境记录中找不到名称dog。...dog ^ ReferenceError: dog is not defined 每当我们创建或定义变量时,变量名称都会写入环境记录中。...can't find it 注意:未定义的变量不会抛出ReferenceError,因为它存在于环境记录中只是它的值尚未设置。...解析期间,JS引擎捕获了此错误。 在JS引擎中,我们的代码经过不同的阶段,然后才能在终端上看到这些结果。...6.EvalErro 在使用全局eval()函数时,此函数用于识别错误。 根据EcmaSpec 2018版: 此规范当前未使用此异常。 保留该对象是为了与本规范的先前版本兼容。
复制代码 2.动机 用来捕获promise代码中的错误 3.范围 使用Promise.prototype.catch()我们可以方便的捕获到异常,现在我们来测试一下常见的语法错误、代码错误以及异步错误...// 捕获到的promise异常的: PromiseRejectionEvent 复制代码 注意:此段代码直接写在控制台是捕获不到promise异常的,写在html文件中可正常捕获。...3.范围 很遗憾,结果并不令人满意,在实际的测试过程中,该方法未能捕获到异常。...错误边界在渲染期间、生命周期方法和整个组件树的构造函数中捕获错误。...特定的错误信息,比如错误所在的生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件的渲染和观察期间未捕获错误的处理函数。
ReferenceError: 引用了未定义的变量或对象 TypeError: 类型错误 URIError: URI操作错误 SyntaxError: 语法错误 (这个错误WebIDL中故意省略,保留给...,而 try-catch 则是用于在可预见的情况下监控特定的错误。...().catch(cb) 优点: 可以捕获 Promise 的拒绝(失败)状态,并执行相应的错误处理逻辑 可以很方便地处理 Promise 的成功和失败回调 缺点: 无法捕获 Promise 内部的同步异常...,只能捕获到 Promise 对象本身的异常 无法捕获到其他异步操作中的错误,例如网络请求失败等。...可以捕捉请求过程中的各个阶段的错误,如请求失败、超时等 缺点: 需要编写更多的代码来处理请求细节,容易出现回调地狱。 需要手动处理跨域问题 不支持 Promise,需要使用回调函数来处理响应结果。
这篇文章的重点是概述我们在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引擎中,我们的代码经历了不同的阶段,然后才能在终端上看到运行结果。 标记化 解析 执行 标记化将源代码分解为各个单元。
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 引擎中,我们的代码经历了不同的阶段,然后才能在终端上看到结果。 标记化 解析 解释 标记化将代码的源分解为各个单元。
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子句来检查对象是否未定义也是有帮助的。
) }); // ok 上面代码中,Promise 在resolve语句后面,再抛出错误,不会被捕获,等于没有抛出。...不过,Node 有一个unhandledRejection事件,专门监听未捕获的reject错误,上面的脚本会触发这个事件的监听函数,可以在监听函数里面抛出错误。...如果 Promise 内部有未捕获的错误,会直接终止进程,并且进程的退出码不为 0。 再看下面的例子。...到了那个时候,Promise 的运行已经结束了,所以这个错误是在 Promise 函数体外抛出的,会冒泡到最外层,成了未捕获的错误。...: x is not defined] // carry on [ReferenceError: y is not defined] 上面代码中,第二个catch方法用来捕获前一个catch方法抛出的错误
__proto__; 可以看到,then方法是定义在原型对象Promise.prototype上的。...另外,then方法指定的回调函数运行中的错误,也会被catch捕获。...而对于每个promise对象,一旦它被自己定义catch方法捕获异常,那么状态就会更新为resolved而不是rejected。...下面代码中,Promise对象resolved后,状态就无法再变成rejected了。...: x is not defined] // carry on [ReferenceError: y is not defined] 参考 demo 基本可以在阮一峰的 Es6 讲解中找到,只是为了理解做了一些修改
无法捕获语法错误; 到这里基本就清晰了:在实际的使用过程中,onerror 主要是来捕获预料之外的错误,而 try-catch 则是用来在可预见情况下监控特定的错误,两者结合使用更加高效。...这些 error 事件不会向上冒泡到 window ,不过(至少在 Firefox 中)能被单一的window.addEventListener 捕获。...六、Promise Catch 在 promise 中使用 catch 可以非常方便的捕获到异步 error ,这个很简单。...没有写 catch 的 Promise 中抛出的错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 中不要忘记写 catch 处理抛出的异常。...实际上,大多数情况下我们可以在整个程序中定义一个 error boundary 组件,之后就可以一直使用它了!
无法捕获语法错误; 到这里基本就清晰了:在实际的使用过程中,onerror 主要是来捕获预料之外的错误,而 try-catch 则是用来在可预见情况下监控特定的错误,两者结合使用更加高效。...这些 error 事件不会向上冒泡到 window ,不过(至少在 Firefox 中)能被单一的window.addEventListener 捕获。...Promise Catch 在 promise 中使用 catch 可以非常方便的捕获到异步 error ,这个很简单。...没有写 catch 的 Promise 中抛出的错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 中不要忘记写 catch 处理抛出的异常。...实际上,大多数情况下我们可以在整个程序中定义一个 error boundary 组件,之后就可以一直使用它了!
领取专属 10元无门槛券
手把手带您无忧上云