JavaScript错误调试

错误调试与处理2-1 语法错误

语法错误:

  不符合js语法的错误,控制台会告知出错的行号(但行号不一定准确)。

常见语法错误:

  1,符号漏错多少打。

  2,使用了不合语法的变量名。(关键字,保留字不能做变量名)。

  3,语句写错,没写完等。

错误提示:

   Uncaught SyntaxError:Unexpected token xxx //未预料到xxx。

identifier:变量名。

逗号表达式将会返回最后一个表达式的结果

 错误调试与处理2-2 运行时错误

运行时错误(Runtime Error):

  代码没有语法错误,而在运行的时候才发生的错误。运行时错误时一个统称。

常见运行时错误:

ReferenceError,变量引用异常触发。(变量未定义就开始使用)。

  Uncaught ReferenceError(未捕获到的引用错误):foo is not defined(...)。

TypeError,类型使用错误时触发。(1,获取未初始化的变量的属性或方法。2,定义了一个变量值为数字,结果把该变量当成了函数并调用)。

  1,Uncaught TypeError:Cannot read property ‘length‘ of undefined(...)。无法读取undefined的length属性。

  2,Uncaught TypeError:bar is not a function(...)。bar不是一个函数。

RangeError,不太常见,一般会在递归爆栈时触发,即递归深度太深(例如函数自身调用自身,无限不停止)。(一般浏览器最高可以递归1024层)。

  Uncaught RangeError:Maximum call stack size exceeded(...)。最大的调用栈超出大小。

解决方式:将递归用循环来写

调用栈:

如何区分语法错误与运行时错误:

  语法错误无论如何都不可能运行成功,

  运行时错误时有可能运行成功的。

错误调试与处理2-4 逻辑错误

逻辑错误:

  计算结果不符合预期。 使用单步跟踪调试debugger,在控制台查看。

Watch:显示变量值,可自动添加,删除。

F8:恢复执行。

F10:跳过下个函数,当做一行代码执行,不想看函数内部的执行,单步执行。

F11:进入函数内部查看。

shift+F11:跳出函数内部的执行。

在控制台的代码中点击行数可设置Breakpoints断点,再点一次删除断点。

鼠标放在变量上,也会显示变量值,也可自己在控制台输入查看,甚至是改变值。

错误调试与处理2-5 try-catch语句

主动触发错误:

   当发生一些不可避免的错误时,可以使用下面的语句来抛出这个错误。

throw new Error("错误描述");//抛出错误

开发中不建议使用prompt函数,用户体验不是很好。

try {}

catch(e) {}

无论任何时候,throw了一个错误,之后的代码不会运行,这个错误会一直往外找try(错误的冒泡),所以会出错的地方需要用try包裹,找到后接着这个错误会被catch(e)里的变量e接收,并在catch(e){这里可以提示错误。}

运行时错误也可被trycatch捕获

try{}//如果里面没有错误,则不会执行catch,但是finally还是会执行

catch(e){}//try内有错误才会执行,错误对象赋值给catch括号内的变量,执行完catch再执行finally,若是在catch里return了一个值,依旧会执行finally,若在finally里也return了一个值,那么return的值会时finally里的。

finally{}//做一些清理性的工作,finally块时一定会执行的

浏览器会先从前往后解析代码,语法错误在解析过程中就出错了。其实语句都还没开始执行,就已经出错了。无法被trycatch捕获。

finally里一般拿来做一些善后清理工作

try块里出现错误的话,会立即跳出try块,找到匹配的错误,执行catch块里的语句

此时,可能在try块里打开的文件没关闭,连接的网络没断开,对这些浪费的内存就不能及时释放回收。

如果有finally块的话,不管有没有出错,都会执行finally块里的内容。就能实现使用finally清理了。

使用try catch,在js出现错误的时候,把异常捕获掉,这样程序仍能正常运行下去,如下:


1

2

3

console.log(i);

var a = 5;

console.log(++a);

因为i 未定义,出现错误,那么js就卡在这里了,后面 a 的结果不执行了。

看看使用try catch


1

2

3

4

5

6

7

try {

   console.log(i);

   }catch(e) {

       console.log(e)

    }

var a = 6;

console.log(++a);

那么,i 未定义的错误被捕获掉了,程序仍能继续运行下去,最后输出a的结果是6.

原文地址:https://www.cnblogs.com/zhonghonglin1997/p/9857281.html

时间: 2024-08-29 22:15:44

JavaScript错误调试的相关文章

第一百二十三节,JavaScript错误处理与调试

JavaScript错误处理与调试 学习要点: 1.浏览器错误报告 2.错误处理 3.错误事件 4.错误处理策略 5.调试技术 6.调试工具 JavaScript在错误处理调试上一直是它的软肋,如果脚本出错,给出的提示经常也让人摸不着头脑.ECMAScript第3版为了解决这个问题引入了try...catch和throw语句以及一些错误类型,让开发人员更加适时的处理错误. 一.浏览器错误报告 随着浏览器的不断升级,JavaScript代码的调试能力也逐渐变强.IE.Firefox.Safari.

【转】JQuery.Ajax之错误调试帮助信息

下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET".注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持. timeout Number 设置请求超时时间(毫秒).此设置将覆盖全局设置. async

[转]JQuery.Ajax之错误调试帮助信息

下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET".注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持. timeout Number 设置请求超时时间(毫秒).此设置将覆盖全局设置. async

JQuery.Ajax之错误调试帮助信息

原文:http://mybloggers.blog.163.com/blog/static/1003865092010111631741468/ 下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET".注意:其它 HTTP 请求方法,如 PUT

Javascript的调试利器:Firebug使用详解

转载自:http://blog.csdn.net/tianxiaode/archive/2007/09/02/1769152.aspx   一直在用firebug,可是没有这么精通,今天看到本文章觉得不错,转来 Javascript的调试,是开发Web应用尤其是AJAX应用很重要的一环,目前对Javascript进行调试的工具很多,我比较喜欢使用的是Firebug.Firebug是Joe Hewitt开发的一套与Firefox集成在一起的功能强大的web开发工具,可以实时编辑.调试和监测任何页面

Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则

众所周知Visual Studio 2013中有一个由SignalR机制实现的Browser Link功能,意思是开发人员可以同时使用多个浏览器进行调试,当按下IDE中的Browser Link按钮后,开发中对页面的更改会同步到所有已连接的浏览器中.Browser Link按钮就是位于浏览器调试按钮右边的一个类似“刷新”的按钮: 最近在开发apworks.org的新版本(之前因为供应商的问题导致网站全部瘫痪,我也一直没来得及修复,索性自己重新打造一个,顺便也验证Apworks框架的可用性),发现

JavaScript错误/异常处理

JavaScript Try...Catch 语句 介绍:JavaScript中的try...carch语句的作用和C#中的try...catch语句的作用一样, 都是捕获并处理异常. 语法: try { //在此运行代码 } catch(err) { //在此处理错误 } 例子: <html> <head> <script type="text/javascript"> var txt="" function message()

jQuery之ajax错误调试分析

jQuery之ajax错误调试分析 jQuery中把ajax封装得非常好.但是日常开发中,我偶尔还是会遇到ajax报错.这里简单分析一下ajax报错 一般的jQuery用法如下,ajax通过post方式提交"汤姆和老鼠"这段数据到xxx.php文件中.成功后则打印返回的数据,失败则打印错误原因. 1 2 3 4 5 6 7 8 9 10 $.ajax({     url:"xxx.php",     type:"post",     dataty

javascript错误:对象不支持此属性或方法

javascript错误:对象不支持此属性或方法 出现如上错误的原因主要有以下两种: 1.方法对应的JS函数未定义 2.属性所用的id名字跟函数名相同也会报此错误,id或函数名改个地方即可.