javascript错误处理与调试

本文主要介绍javascript中一些常见的错误,以及一些用于调试和处理错误的基础,以帮助我们提高javascript代码的质量.

先说下javascript中常见的7种错误:

1.变量未定义

下面的语句将隐式的创建一个新的变量abc,并将值123赋给该变量:

<span style="font-size:24px;">abc = 123;</span>

严格的讲,应该显式的定义该变量:

<span style="font-size:24px;">var abc = 123;</span>

(实际上,是否使用var关键字与变量的作用域有关,因此最好在定义变量时都加上var关键字)

但是,如果使用一个未定义的变量,将产生错误.例如,如果变量abc事先没有显式或隐式的定义,下面语句将产生错误:

<span style="font-size:24px;">alert(abc);</span>

2.大小写敏感

大小写错误是最常见的错误之一,但有时是很难发现的.例如,找出下面语句的三处错误:

<span style="font-size:24px;">var myName ="Paul";
If(myName=="paul") {
    alert(myName.toUppercase());
}<span style="font-family: 宋体; background-color: rgb(255, 255, 255);"> </span></span>

3.不匹配的大括号

4.不匹配的小括号

(上面两个错误类似的,当语句过长时就会发生,当然这些也是很容易发现的.)

5.连接字符串时缺少加号(+)

这种错误当语句短时发现很容易,但是长了就会非常麻烦,而且不同的浏览器报错提醒是不一样的.对于IE浏览器,提示"Error:Expected(缺少对象)",而对Firefox浏览器,则提示"Missing;before
statement(在下列语句中缺少;号)".

6.赋值而不是相等

看下面的代码:

var myNumber = 99;
if (myNumber=101) {
    alert("myNumber is 101");
}
else {
    alert("myNumber is"+myNumber);
}

看完上述代码,你是不是想else的字句中的alert()方法将会执行,并提示我们"myNumber
is 99"?但事实并非如此.if语句判断中错误的将两个等号(==)写成了一个(=),将比较运算符(==)写成了赋值运算符(=).这是一个非常典型的错误.javascript和vb不同,对于vb,赋值操作和比较运算都是一个等号.这个错误不会产生错误信息,从而非常容易被忽视.我们要记住的是,当程序的逻辑出现混乱和异常时,可以检查下是不是这里出了问题.

补充:

//相等和全等
alert(1 =='1');                        //true,相等对的是值,类型不用比较
alert(1 ==='1');                        //false,全等还需要比较类型

alert(1 ==true);                //true,1会隐式转换为布尔值,true== true
alert(1 ===true);                //false,1本身是数值,true本身是布尔值

PS:在类型不相等的情况下,建议使用全等 ===

7.将方法误认为属性,或者将属性误认为方法

这里常犯的就是在使用方法时忘记在方法名后带一对圆括号,或者在使用属性时,在属性名后带上多余的圆括号.例如,下面的代码:

var nowDate = new Date;
alert(nowDate.getDay);

第一行中,使用了Date对象的构造函数,该构造函数式Date对象的一个简单方法,但是,方法名后却没有一对圆括号;第二行中,调用了Date对象的getDay()方法,却忘记一

对圆括号.

正确代码如下:

var nowDate = new Date();
alert(nowDate.getDay());

错误处理

1.try...catch语句

try...catch语句总是成对出现的

try-catch的意义

1.可以通过修改代码来排错的,不需要使用try-catch

2.浏览器兼容性问题,可以通过判断浏览器或者判断是否支持某个属性或方法来判断,不需要try-catch

比如,无法修改代码的情况下,可能会发生错误,这个时候用try-catch,网络中断了

try {
alert(innerWidth);                        //W3C
}catch (e) {
alert(document.documentElement.clientWidth);                        //IE
}

PS:这样的确能实现兼容性问题,但逻辑上是不正确的.因为innerWidth不支持的浏览器,可能不一定是IE.

//抛出错误,说明我们自己无法解决,就需要把错误报出

try {
new10;
} catch (e) {
if (einstanceof TypeError) {
thrownew TypeError('类型错误:实例化new的时候,可能产生了错误!');
} else{
//alert(e);                        //这种行为叫做处理错误,浏览器不抱错了,因为处理掉了,屏蔽了错误显示
thrownew Error('未知错误!');
}
}

new10;                        //浏览器自己抛出了错误

addEvent(window, 'error',function () {
alert('程序发生错误了!');
});
 

脚本调试器

时间: 2024-10-12 14:56:53

javascript错误处理与调试的相关文章

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

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

《JAVASCRIPT高级程序设计》错误处理与调试

一.错误处理 错误处理在程序设计中的重要性是毋庸置疑的,任何有影响力的web应用程序都需要一套完善的错误处理机制.良好的错误机制可以让用户得到提醒,知道发生了什么事. 1.try-catch语句 try-catch语句是javascript处理异常的一种标准方式,它的结构如下: try{ // 把所有可能出现错误的代码放在try语句中 }catch(err){ // 把用于处理错误的块放在catch语句中 // catch块会接受到一个保存错误信息的对象 // 该对象的message属性是唯一一

JavaScript高级程序设计学习笔记--错误处理与调试

try-catch语句 只要代码中包含finally子句,则无论try或catch语句块中包含什么代码--甚至return语句,都不会阻止finally子句的执行,来看下面这个函数: function testFinally(){ try{ return 2; }catch(error){ return 1; }finally{ return 0; } } 调用这个函数会返回0(PS:但我实际执行的时候会先返回0,再返回2) 抛出错误 与try-catch语句相配的还有一个throw操作符,用于

js错误处理与调试理论和办法

阅读本文,以抓取有用的信息(可以以我加粗为参考)为主,老外写的 废话较多 ECMA-262 第 3 版引入了 try-catch 语句,作为 JavaScript 中处理异常的一种标准方式.基本的语 法如下所示,显而易见,这与 Java 中的 try-catch 语句是完全相同的. try{ // 可能会导致错误的代码 } catch(error){ // 在错误发生时怎么处理 } 也就是说, 我们应该把所有可能会抛出错误的代码都放在 try 语句块中, 而把那些用于错误处理的 代码放在 cat

第 28 章 错误处理与调试

JavaScript 在错误处理调试上一直是它的软肋,如果脚本出错,给出的提示经常也让人 摸不着头脑. ECMAScript 第 3 版为了解决这个问题引入了 try...catch 和 throw 语句以及一些 错误类型,让开发人员更加适时的处理错误. 一.浏览器错误报告 随着浏览器的不断升级,JavaScript 代码的调试能力也逐渐变强.IE.Firefox.Safari. Chrome 和 Opera 等浏览器,都具备报告 JavaScript 错误的机制.只不过,浏览器一般面向 的是普

JavaScript之WEB开发调试利器:Firebug

一.概要介绍 Firebug是Firefox的一个插件,Firebug 和 firefox 整合在一起,使你浏览网页时手边有了一套强大的网页开发工具.你可以编辑.调试和监控任何网页上的 CSS.HTML 和 Javascript.而且可以在线的时候修改dom非常弹大的插件. 怎么说呢,强就一个字啦-NND,上面这个图是我开到了 Ispect 状态,鼠标移动时截下来的.这比看源文件然后再搜索可是方便的太多了,这个世界是怎么了,还有这样的雷峰存在,真是太BT了- 而且还可以对AJAX进行Debug,

JS 错误处理与调试

在程序开发中难免会遇到一些错误,在成千上万的代码中去寻找错误很明显相当于大海捞针,为此,每种计算机编程语言都要它独特的一套错误处理与调试机制.当然,JavaScript也不例外. 发生错误: 执行代码时发生的错误有很多.每种错误都有对应的错误类型.ECMA-262定义了7种错误类型: 1.Error 错误 2.EvalError 全局错误 3.RangeError 引用错误 4.ReferenceError 参数错误 5.SyntaxError 语法错误 6.TypeError 类型错误 7.U

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

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

js错误处理与调试理论和办法 (转)

js错误处理与调试理论和办法 ECMA-262 第 3 版引入了 try-catch 语句,作为 JavaScript 中处理异常的一种标准方式.基本的语法如下所示,显而易见,这与 Java 中的 try-catch 语句是完全相同的.try{// 可能会导致错误的代码} catch(error){// 在错误发生时怎么处理}也就是说, 我们应该把所有可能会抛出错误的代码都放在 try 语句块中, 而把那些用于错误处理的代码放在 catch 块中.例如:try {window.someNonex