JavaScript高级程序设计-第三版(错误处理与调试)

十七、错误处理与调试

17.1 浏览器报告的错误

  • js发生错误时,默认隐藏错误信息

17.1.1 IE

  • 可以设置为一旦有错误发生就弹出错误通知

17.1.2 Firefox

  • 错误记录在控制台

17.1.3 Safari

17.1.4 Opera

17.1.5 Chrome

17.2 错误处理

17.2.1 try-catch语句

try{
 	...
}catch(error){
	alert(error.message);
}
17.2.1.1 finally子句
  • finally子句之前的return都会被忽略
17.2.1.2 错误类型
  • 可以通过instanceof判断类型
17.2.1.3 合理使用try-catch
  • 使用try-catch后,浏览器将不会记录错误

17.2.2 抛出错误

  • 可以抛出任意类型的对象
    • throw { name : “javascript” };
  • 可以抛出内置错误类型
    • throw new Error(message);
  • 可以创建自定义错误类型
    • 作用:明确错误原因,方便调试
17.2.2.1 抛出错误的时机
  • 在某种特定条件(例如参数必须为数组等)下,执行函数失败时抛出错误
17.2.2.2 抛出错误与使用try-catch
  • 抛出错误的目的在于提供错误发生具体原因的消息
  • try-catch的目的在于避免浏览器以默认方式处理它们

17.2.3 错误(error)事件

  • 任何未被捕获的错误都将触发window对象的error事件
  • window对象的error事件不会创建event对象,只接收三个参数
    • message
    • url
    • line
  • <image>也支持error事件
    • src指定的URL无法返回能被识别的图像格式则会触发该事件
    • 会创建event对象

17.2.4 处理错误的策略

  • 记录错误何时发生及发生原因

17.2.5 常见的错误类型

17.2.5.1 类型转换错误

17.2.5.2 数据类型错误

17.2.5.3 通信错误

  • 格式不正确的URL或发送的数据有问题

17.2.6 区分致命错误和非致命错误

  • 非致命错误
    • 不影响用户的主要任务
    • 只影响页面的一部分
    • 可以恢复
    • 重复相同操作可以消除错误
  • 致命错误
    • 应用程序根本无法继续运行
    • 错误明显影响到了用户的主要操作
    • 会导致其他连带错误

17.2.7 把错误记录到服务器

  • catch到错误之后,将错误信息发送到服务器集中管理
  • 标注错误来自前端

17.3 调试技术

17.3.1 将消息记录到控制台

  • console
    • error
    • info
    • log
    • warn

17.3.2 将消息记录到当前页面

17.3.3 抛出错误

  • 抛出有明确信息的错误

17.4 常见的IE错误

17.4.1 操作终止

  • 在页面未完全加载时操作未加载的元素

17.4.2 无效字符

17.4.3 未找到成员

  • 给已销毁的变量赋值

17.4.4 未知运行时错误

  • 在行内元素中插入块元素
  • 访问表格任意部分的任意属性

17.4.5 语法错误

  • 引用了外部javascript文件,但该文件最终并没有返回javascript代码
  • 内部语法错误

17.4.6 系统无法找到指定资源

  • get方式请求,且URL过长
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值