• 首 页

网站建设|北京网站建设|北京网站制作|北京网站建设首选品牌【企通互联】

http://www.qitongnet.com 网站建设咨询热线:010-65587978/77/76/75

相关文章

dreamweaver 8是啥
企通互联Fireworks 制作一个水晶图标
网站制作CSS的倡导者:学习CSS的10大理由
网站建设Photoshop调色:增加照片的对比度和颜色的小技巧
北京网站建设使用Javascript制作声音按钮
网站建设网页设计技巧系列之三 再谈布局
北京网站建设用户体验:JS实现仿新浪信息提示效果
北京网站建设网页制作教程:认识CSS的伪类
网页设计40种网页常用小技巧
北京网站制作用CSS实现的一张图完成的导航条


品牌理念

北京网站建设最佳合作伙伴
北京网站建设专家企通互联
竭诚为您提供网站建设服务!


友好连接

    • 网站建设
    • 网页设计
    • 网站设计
    • 网站制作
    • 网站优化
    • 百度优化
    • google优化
    • seo
    • 网站推广
    • 网络营销
    • 北京网站建设
    • 北京网站制作
    • 北京网页设计
    • 北京网站设计

文章搜索

你的位置:首页 >> 网页设计 >> 北京网站设计网页设计网页技巧:妥善处理JavaScript中的错误

北京网站设计网页设计网页技巧:妥善处理JavaScript中的错误


作者: 北京网站建设   日期:2008-03-27 06:14:05  来源: http://www.qitongnet.com

不管你的技术水平如何,错误或异常是应用程序开发者生活的一部分。Web开发的不连贯性留下了许多错误能够发生并确实已经发生的地方。解决的关键在于处理任何不可预见的(或可预见的错误),来控制用户的体验。利用JavaScript,就有多种技术和语言特色可以用来正确地解决任何问题。 中.国站长站

事事检查 Chinaz^com

在开始之前检查一切是一个好的编程习惯,也就是说,你应该在利用它们之前,检查对象、方法调用等的有效性。这样就避免了与未实例化对象或对不存在的方法调用有关的错误。列表A在使用对象(变量和字段)之前会对它们进行检查。在使用字段对象之前,该脚本保证它们为有效或非空字段。

Www~Chinaz~com

列表A Www@Chinaz@com

以下为引用的内容:网站设计

<html>企通互联
<head>北京网站建设
<title>JS Test</title>网站设计
<script type="text/javascript"> 北京网站建设
function validate() {网站制作
var doc = document.forms[0];北京网站建设
var flag = true;企通互联
if (doc != null) {企通互联
if (doc.fullName != null) {北京网站建设
if (doc.fullName.value == '') {企通互联
flag = false;网站制作
}北京网站制作
} else      {北京网站设计
flag = false;网站制作
}北京网页设计
if (doc.contactNumber != null) {北京网站建设
if (doc.contactNumber.value == '') {北京网页设计
flag = false;北京网站建设
}北京网页设计
} else {北京网页设计
flag = false;北京网页设计
}网站设计
if (flag) {北京网站设计
alert('Validation successful, document will be submitted.');

站.长.站
网站设计
doc.submit();北京网站制作 网页设计
} else {网站建设
alert('Enter values before submitting.');网站建设
} }网站制作
return 0; }北京网站建设
</script>网站建设
</head>北京网站设计
<body>网页设计
<form id="frmTest">网页设计
Name: <input id="fullName" name="fullName" type="text"><br>北京网站制作
Address: <input id="contactNumber" name="contactNumber" type="text"><br>网页设计
<input type="button" value="Submit" onclick="validate();">北京网站设计
</form>企通互联
</body>北京网站建设
</html> Chinaz@com

中国.站.长站

你并不需要实际地检查有效性——你可以简单地在if 语句中使用一个对象,如果它不是一个无效对象的话,所求得的值就为真。列表B就用了这种句法,同时也用到了getElementByID方法。它用了一个if语句来保证在继续之前getElementByID方法是被支持的(存在)。 Chinaz.com

列表B 中国.站长站

以下为引用的内容:企通互联

<html><head>网页设计
<title>JS Test</title>北京网站设计
<script type="text/javascript"> 北京网页设计
function validate() {企通互联
var doc = document.forms[0];网站制作
var flag = true;北京网站制作
if (doc != null) {网站建设
if (doc.getElementById) {网站建设
if (doc.getElementById("fullName")) {网站设计
if (doc.fullName.value == '') {北京网站建设
flag = false;网站设计
}网站设计
} else {网页设计
flag = false;网站制作
}网站设计
if (doc.getElementById("contactNumber")) {北京网页设计
if (doc.contactNumber.value == '') {北京网页设计
flag = false;北京网站设计
}北京网站制作
} else {北京网站设计
flag = false;网页设计
}网站制作
if (flag) {

Www@Chinaz@com

北京网页设计
alert('Validation successful, document will be submitted.');网页设计
doc.submit()北京网站制作
} else {网页设计
alert('Enter values before submitting.');北京网页设计
} }网页设计
return 0; }北京网页设计
</script>网站设计
</head>网站制作
<body>网站制作
<form id="frmTest">网站建设
Name: <input id="fullName" name="fullName" type="text"><br>北京网站建设
Address: <input id="contactNumber" name="contactNumber" type="text"><br>网站制作
<input type="button" value="Submit" onclick="validate();">北京网站设计
</form>网站设计
</body>企通互联
</html> Chinaz@com

中.国.站长站

虽然在使用对象之前检查它们是一个好方法,但是有时候还是会有错误出现。在这些实例中,JavaScript语言使得发现错误变得简单,从而能够继续下去。 Chinaz

发现错误

站.长站

和Java、C#等其他语言相类似,JavaScript中包括了try/catch/finally语句。一个try语句包含了一组代码,在这组代码中,像运行时间错误这样的异常可能会发生。catch子句概述了怎样处理错误,finally块中包括了始终被执行的代码。

中国站.长站

一般来说,代码设法执行一组代码,如果没有执行成功的话,支配权就传到catch块。如果没有错误发生,就跳过catch块。finally块在try和catch块完毕后执行。它的句法如下:

Chinaz.com

以下为引用的内容:网页设计
try 北京网站建设
{北京网站建设
// code北京网站制作
}北京网站设计
catch北京网站建设
{网页设计
// code北京网站制作
}网站设计
finally北京网站制作
{北京网站制作
// code北京网站建设
}

中国站长.站

catch和finally块是可选的,但是如果没有catch块是没有意义的。仔细考虑列表C,它示范了try/catch/finally的用法。从被引用的字段在表格中不存在开始,错误就发生了。 Chinaz

列表C Chinaz.com

以下为引用的内容:网页设计

<html>北京网页设计
<head>北京网页设计
<title>JS Test</title>北京网站建设
<script type="text/javascript"> 北京网站制作
function doIt() {北京网页设计
if (document.forms[0].firstName.value == '') {北京网站设计
// do something网站建设
} 企通互联
return 0; }网站设计
</script>网站建设
</head>网站设计
<body>网站建设
<form id="frmTest">北京网站制作
Name: <input id="fullName" name="fullName" type="text"><br>北京网页设计
Address: <input id="contactNumber" name="contactNumber" type="text"><br>北京网站设计
<input type="button" value="Submit" onclick="doIt();">

站.长站
北京网页设计
</form>北京网页设计
</body>网页设计
</html> Www_Chinaz_com

中.国站长站

一个try/catch块不能避免错误,但是它能够很得体地处理错误,这样用户就不会面对晦涩的浏览器出错信息。观察列表D。

中.国站长站

列表D Www@Chinaz@com

以下为引用的内容:企通互联

<html>网站建设
<head>北京网页设计
<title>JS Test</title>企通互联
<script type="text/javascript"> 北京网站建设
function doIt() {北京网站制作
try {北京网站制作
if (document.forms[0].firstName.value == '') {北京网站设计
// do something网站建设
} 企通互联
} catch(e) { 企通互联网站设计
document.write("An unexpected error has occurred.<br><br>");北京网站制作
document.write("Please contact the administrator.<br><br>");网站建设
document.write(e.message);网页设计
} finally {北京网站制作
document.forms[0].submit();北京网页设计
}北京网站制作
return 0; }北京网站设计
</script></head>北京网页设计
<body>

Chinaz

北京网站设计
<form id="frmTest">北京网站建设
Name: <input id="fullName" name="fullName" type="text"><br>企通互联
Address: <input id="contactNumber" name="contactNumber" type="text"><br>北京网站设计
<input type="button" value="Submit" onclick="doIt();">企通互联
</form></body></html> 中国站长_站,为中文网站提供动力

中国.站.长站

它提示了以下信息,但是finally块保证了窗体的提交——不管有什么错误发生。 北京网站建设 中.国站长站

以下为引用的内容:企通互联
An unexpected error has occurred.北京网站建设
Please contact the administrator.企通互联
'document.forms.0.firstName.value' is null or not an object

Chinaz

单个catch块可以处理所有问题,但是多个catch语句可以被用来处理特定的错误。这个问题在下个部分会涉及到。

站.长.站

用try/catch语句可以很容易地处理不可预见的错误。在某些情况下,可能你想以不同的方式处理错误,JavaScript提供了throw语句。它的句法是很基本的——throw后面紧跟要发生的异常。这就使得你能够定义和引发自定义的异常。列表E中的代码创建了一个缺失值的异常,并且它是生成的。 Chinaz

网站制作列表E Chinaz_com

以下为引用的内容:北京网站制作
<html><head>北京网站建设
<title>JS Test</title>北京网页设计
<script type="text/javascript"> 网页设计
function MissingValueException (errMsg) {网页设计
this.message = errMsg;网页设计
this.name="MissingValueException";网站制作
}网站设计
function doIt() {网站制作
try {北京网站制作
if (document.forms[0].fullName.value == '') {网页设计
noNameException = new MissingValueException("First name is missing.");北京网站建设
throw noNameException;网站建设
} else {北京网站建设
document.forms[0].submit();企通互联
}网页设计
} catch(e) {网站制作
document.write("An unexpected error has occurred.<br>");网站建设
document.write("Please contact the administrator.<br>");

中国站长_站,为中文网站提供动力

北京网页设计
document.write(e.message);北京网站制作
} finally {网站建设
document.forms[0].submit();北京网站建设
}网站制作
return 0; }网站建设
</script></head><body>北京网站建设
<form id="frmTest">网站设计
Name: <input id="fullName" name="fullName" type="text"><br>网站建设
Address: <input id="contactNumber" name="contactNumber" type="text"><br>北京网页设计
<input type="button" value="Submit" onclick="doIt();"> 北京网页设计北京网站建设
</form></body></html>北京网站制作
中国站.长.站

它将会显示以下信息(如果在字段中没有值输入的话): Chinaz@com

以下为引用的内容:北京网页设计

An unexpected error has occurred.企通互联
Please contact the administrator.网站建设
First name is missing.

中国站长_站,为中文网站提供动力

Www~Chinaz~com

除此之外,你还可以用运算符instanceof来确定异常的类型,从而做出反应。列表F中的代码会检查异常对象的类型并相应地显示有关数据。 中国站长_站,为中文网站提供动力

列表F 站.长.站

以下为引用的内容:网站设计

<html>北京网站建设
<head>北京网站设计
<title>JS Test</title>网站制作
<script type="text/javascript"> 网站设计
function MissingValueException (errMsg) {网页设计
this.message = errMsg;网站设计
this.name="MissingValueException";网站制作
}北京网站制作
function doIt() {网站建设
try {网站设计
if (document.forms[0].fullName.value == '') {网站设计
noNameException = new MissingValueException("First name is missing.");网站制作
throw noNameException;网页设计
}北京网站制作
} catch(e) {网页设计
if (e instanceofMissingValueException) {北京网站制作
document.write(e.message + "<br>"); 中.国.站.长.站 北京网页设计
document.write("Please contact the administrator.<br><br>");北京网站设计
} else {企通互联
document.write("An unexpected error has occurred.<br>");网站设计
document.write("Please contact the administrator.<br>");北京网页设计
document.write(e.message);北京网页设计
} } finally {网站制作
document.forms[0].submit();北京网站制作
} return 0; }北京网站设计
</script></head><body>网页设计
<form id="frmTest">北京网页设计
Name: <input id="fullName" name="fullName" type="text"><br>网站制作
Address: <input id="contactNumber" name="contactNumber" type="text"><br>网站制作
<input type="button" value="Submit" onclick="doIt();">北京网页设计
</form></body></html>

站 北京网站制作.长站

站.长.站

运算符instanceof可以同标准错误一起使用。JavaScript定义了以下标准的JavaScript错误类型:

Chinaz

EvalError:表明全局的eval函数使用错误。 Www.Chinaz.com

RangeError:说明一个数值超过了所允许的值的范围。

中.国站长站

ReferenceError:发现了一个非法的引用。 Chinaz.com

SyntaxError:发生了一个句法分析错误。 [中国站长站]

TypeError:一个操作数的实际类型与所预期的类型不同。 Chinaz_com

URIError:其中一个全局URI函数(编码URI或解码URI)使用错误。

Chinaz@com

列表 www.qitongnet.comG中的代码在一个catch语句中采用了TypeError类型。由于在引用字段名(document)的行中多了一个d,结果发生了一个打字错误(ddocument)。

站长.站

列表G

Chinaz.com

以下为引用的内容:北京网站设计

<html><head>网站建设
<title>JS Test</title>北京网站制作
<script type="text/javascript"> 北京网站建设
function MissingValueException (errMsg) {网站制作
this.message = errMsg;北京网站建设
this.name="MissingValueException";北京网站设计
}北京网站建设
function doIt() {网页设计
try {网页设计
if (ddocument.forms[0].fullName.value == '') {网站制作
noNameException = new MissingValueException("First name is missing.");网站制作
throw noNameException;企通互联
}北京网站设计
} catch(e) {网站设计
if (e instanceofTypeError) {北京网站设计
document.write("Reference error while accessing First Name field.<br><br>");

中.国.站长站
网站制作
document.write("Please contact the administrator.<br><br>");北京网站建设
document.write(e.message);北京网站建设
} else {网站设计
document.write("An unexpected error has occurred.<br><br>"); 网站建设网站设计
document.write("Please contact the administrator.<br><br>");网站设计
document.write(e.message);企通互联
} } finally {北京网站设计
document.forms[0].submit();北京网站制作
} return 0; }北京网页设计
</script></head>北京网站设计
<body><form id="frmTest">北京网站制作
Name: <input id="fullName" name="fullName" type="text"><br>北京网站建设
Address: <input id="contactNumber" name="contactNumber" type="text"><br>网站设计
<input type="button" value="Submit" onclick="doIt();">网站制作
</form></body></html> 中国站长_站,为中文网站提供动力

Chinaz@com

处理所有的页面错误 中.国站长站

另一个你可以自行支配的特性是window.onerror事件。和所有其他的JavaScript事件一样,你可以定义一个函数或者一条代码在事件被触发时运行。它可以用来处理或忽略错误。列表H中的页面显示了遇到的所有JavaScript错误的简单信息。因为指定的函数不存在,所以当点击按钮时,错误就发生了。列表I是用onerror事件来忽略所有的错误的。

站.长站

列表H

Www_Chinaz_com

以下为引用的内容:网站设计
<html><head>网站建设
<title>onError Test</title>网站设计
<script type="text/javascript"> 网站建设
function handleErrors() {北京网页设计
alert("A JavaScript error has occurred.");网站制作
return true;企通互联
}网站设计
window.onerror = handleErrors;北京网页设计
</script></head>网站建设
<body>网站建设
<form id="frmTest">网站制作
Name: <input id="fullName" name="fullName" type="text"><br>北京网页设计
Address: <input id="contactNumber" name="contactNumber" type="text"><br>网站制作
<input type="button" value="Submit" onclick="doIt();"> Www~Chinaz~com 北京网页设计
</form></body></html>北京网站设计
Chinaz

列表I 中国站长_站,为中文网站提供动力

以下为引用的内容:网站建设

<html><head>北京网页设计
<title>JS Test</title>网站设计
<script type="text/javascript"> 网站制作
function ignoreErrors() {网页设计
return true;北京网页设计
}北京网页设计
window.onerror = ignoreErrors;网站设计
</script></head>北京网站制作
<body><form id="frmTest">网站设计
Name: <input id="fullName" name="fullName" type="text"><br>北京网站建设
Address: <input id="contactNumber" name="contactNumber" type="text"><br>网站设计
<input type="button" value="Submit" onclick="doIt();">

中.国.站长站

北京网页设计
</form></body></html> 中国站长.站

中国.站.长站

谨慎处理

Chinaz~com

错误是每一个应用程序的一部分,但是适当的错误处理却不是。合理地运用JavaScript的错误处理特色和自动灵活的译码可以使用户的体验更顺畅,同时也让开发方的诊断工作变得更轻松。 站长.站

北京网页设计
字体:【大】【中】【小】

上一篇:网页设计用Photoshop滤镜轻松制作风景油画

下一篇:网站制作网页技巧:妥善处理JavaScript中的错误

这是一个与众不同的品牌,企通互联只专注于网站建设领域!中小型企业网站建设最佳合作伙伴!网站建设咨询热线:010-65587978/77/76/75!

Copyright © 2008 网站建设|北京网站建设|北京网站制作|北京网站建设首选品牌【企通互联】. Designed by www.qitongnet.com Free Website Templates