js017-错误处理与调试
js017-错误处理与调试
本章内容
理解浏览器报告的错误
处理错误
调试JS代码
17.2 错误处理
17.2.1 try-catch语句
|
try{ //possible error code }catch(error){ //how to deal with this error } |
1、finally子句
该子句在try-catch中是可选的,但是finally子句一经使用,其代码无论如何一定会执行:
|
function textFinally(){ try{ //possible error code return 2; }catch(error){ //how to deal with this error return 1; }finally{ return 0; } } |
该函数只会返回0,只有当最后面的finally去掉后该函数才可能返回2. |
2、错误类型
以下7种错误类型:及其触发场景
|
Error |
基类型 |
|
EvalError |
在使用eval()函数而发生异常是抛出 |
|
RangeError |
在数值超出相应范围时触发 |
|
ReferenceError |
找不到对象是触发 |
|
SyntaxError |
当我们把错误的JS字符串传入eval()函数是触发 |
|
TypeError |
在变量中保存着意外的类型是,或者在访问不存在的方法时。 |
|
URIError |
在使用encodeURI()或decodeURI(),而URI格式不正确时 |
3、合理使用try-catch
17.2.2抛出错误
throw 操作符,用于随时抛出自定义错误。在遇到throw时,代码会立即停止运行。仅当有try-catch捕获到被抛出的错误时代码才会继承执行。
1、抛出错误的时机
2、抛出错误与使用try-catch
17.2.3错误事件
只要发生错误,无论是不是浏览器生成的都会触发error事件,并执行事件,处理程序。
如下事件处理程序中返回false,可以组织浏览器报告错误的默认行为
|
window.onerror = function(message, url, line){ alert(message); return false; } |
图像也支持error事件。只要图像中的额src特性中的URL不能返回可以被识别的图像格式,就会触发error事件。
17.2.4处理错误的策略
17.2.5常见的错误类型
错误处理的核心是首先要知道代码里会发生什么错误。一般来说,需要关注三种错误:
1、类型转换错误;
发生在使用给某个操作符,或者使用其他可能会自动高转换至的数据类型的语言结构时。在使用相等(==)不等(!=)或者if,for,while等流控制语句中使用非布尔值是,最长发生类型转换错误。
使用全等和非全等操作符,可以避免发生因为使用相等和不等操作符引发的类型转换错误
2、数据类型错误;
3、通信错误;
17.2.6 区分之名错误和非致命错误
17.2.7 把错误记录到服务器
17.3调试技术
17.3.1将消息记录到控制台
IE8,Firefox,Opera,Chrome,Safari,都有JS控制台,可以用来查看JS错误。而且,在这些浏览器中的,偶可以通过代码想控制台输出消息,对IE8,Firefox,Chrome,Safari,而言可以通过console对象向JS控制台写入该消息,这个对象具有下列方法:
|
error(message) |
将错误消息记录到控制台 |
|
info(message) |
将信息性消息记录到控制台 |
|
log(message ) |
将一般消息记录到控制台 |
|
warn(message) |
将警告消息记录到控制台 |
17.3.2将消息记录到当前页面
在页面中开辟一小块区域用于显示小。这个区域通常是一个元素。
17.3.3抛出错误
17.4 常见的IE错误
1、操作终止
2、无效字符
3、未找到成员
4、未知运行时错误
5、语法错误
6、系统无法找到指定资源
声明:该博客由http://www.cnblogs.com/lal-fighting/原创发表,未经作者允许,不得私自转载抄袭!!!
js017-错误处理与调试的更多相关文章
- 17. javacript高级程序设计-错误处理与调试
1. 错误处理与调试 l 在可能发生错误的地方使用try-catch方法,可以对错误进行及时的相应 l 使用window.onerror事件处理程序,这种方式可以接受try-catch不能处理的所有错 ...
- 段错误bug的调试
我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的.实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难 免会在此处犯些小错误,而通常这些错误又是那么的浅显而易 ...
- 第一百二十三节,JavaScript错误处理与调试
JavaScript错误处理与调试 学习要点: 1.浏览器错误报告 2.错误处理 3.错误事件 4.错误处理策略 5.调试技术 6.调试工具 JavaScript在错误处理调试上一直是它的软肋,如果脚 ...
- php错误报告和调试
3. 错误报告和调试 常常犯的一个错误是忘记关闭 PHP 错误和数据库错误报告,这样做是有风险的.在任何一个公开的站点,error_reporting 应该设置为0 ,最多只能设置为 E_ERROR, ...
- JS 错误处理与调试
在程序开发中难免会遇到一些错误,在成千上万的代码中去寻找错误非常明显相当于大海捞针.为此,每种计算机编程语言都要它独特的一套错误处理与调试机制.当然,JavaScript也不例外. 错误发生: 运行代 ...
- 【python】错误/异常处理,调试,测试
try: print('try') r=10/2 print('result is:',r) #发生错误,会执行这部分 except ValueError as e: print('ValueErro ...
- javascript错误处理与调试(转)
JavaScript 在错误处理调试上一直是它的软肋,如果脚本出错,给出的提示经常也让人摸不着头脑. ECMAScript 第 3 版为了解决这个问题引入了 try...catch 和 throw 语 ...
- 存储过程实例总结(开发中的错误与总结,调试,数据库函数DATEDIFF计算当前日期是否在本周内)
USE [POND] GO /****** Object: StoredProcedure [dbo].[OrderChargeList] Script Date: 04/16/2014 13:32: ...
- 《JAVASCRIPT高级程序设计》错误处理与调试
一.错误处理 错误处理在程序设计中的重要性是毋庸置疑的,任何有影响力的web应用程序都需要一套完善的错误处理机制.良好的错误机制可以让用户得到提醒,知道发生了什么事. 1.try-catch语句 tr ...
- JavaScript(第二十七天)【错误处理与调试】
JavaScript在错误处理调试上一直是它的软肋,如果脚本出错,给出的提示经常也让人摸不着头脑.ECMAScript第3版为了解决这个问题引入了try...catch和throw语句以及一些错误类型 ...
随机推荐
- Spring学习进阶 (三) Spring AOP
一.是什么AOP是Aspect Oriented Programing的简称,最初被译为“面向方面编程”:AOP通过横向抽取机制为无法通过纵向继承体系进行抽象的重复性代码提供了解决方案.比如事务的控制 ...
- exce生成随机数
有时候数据库没有数据,造数据专用. 来源于:http://jingyan.baidu.com/article/93f9803feba1f5e0e46f55f2.html 首先介绍一下如何用RAND() ...
- Ubuntu下安装IDA pro
预备 由于IDA pro只能装在32位环境下,如果是64位Ubuntu,需要运行如下命令安装32位的必备库. sudo dpkg --add-architecture i386 sudo apt-ge ...
- 【BZOJ 2555】SubString
http://www.lydsy.com/JudgeOnline/problem.php?id=2555 一个字符串在原串中的出现次数就是这个字符串对应后缀自动机上的状态的\(|Right|\),要求 ...
- 如何才能恢复Excel文档的打开密码
对于一些密码的破解,最常用的方法就是“暴力破解”,也是获取密码的最后一种方法,Advanced Office Password Recovery的暴力破解能够破解复杂的Office文档密码.wps也有 ...
- 如何破解Excel文档的编辑密码
对于Excel文档我们不仅可以设置打开密码,还可以设置几天几种密码,比如编辑密码.编辑密码又称写保护密码,是一种可以限制编辑权限的密码.如果我们在日常工作中发现自己忘记了excel编辑密码的话,那就需 ...
- java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'XXXXX' bean
今天启动srpingmvc项目的时候出现了这个异常, 原因: 在同个项目中,我复制了其中一个 Controller 作为备份 却忘记修改 @RequestMapping("/xxx&quo ...
- 深入理解Java多态机制
从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ...
- 【BZOJ-2342】双倍回文 Manacher + 并查集
2342: [Shoi2011]双倍回文 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1799 Solved: 671[Submit][Statu ...
- 【bzoj2120】 数颜色
http://www.lydsy.com/JudgeOnline/problem.php?id=2120 (题目链接) 题意 给出一个n个数,m个询问,每次询问一个区间或修改一个数,求区间内不同的数有 ...