JS中错误处理

1 错误类型

  • 1. Error 是基本类型 其他错误都继承该类型
  • 2. EvalError 使用eval()函数时发生异常
  • 3. RangeError
  • 4. ReferenceError 找不到对象的情况下(导致object expected ),访问不存在的对象的时发生
  • 5. SyntaxError 语法错误
  • 6. TypeError 变量中保存着意外类型,或者在访问不存在的方法时
  • 7. URLError
try {
someFunction();
} catch (error) {
if (error instanceof TypeError) {
// c处理类型错误
} else if (error instanceof ReferenceError) {
// 处理引用错误
} else {
// 处理其他类型错误
}
}

2.与try-catch语句相配的还有一个throw操作符,用于随时抛出自定义的错误

function process(values) {
if (!(values instanceof Array)) {
throw new Error("process():argument must be an array");//自定义错误的类型
}
values.sort();
for (var index = 0; index < values.length; index++) {
if (value[i] > 100) {
return values[i];
}
}
return -1;
}

在js开发中尽量关注函数和可能导致函数执行失败的因素

3. 任何没有通过try-catch处理的错误都会触发window对象的error事件。只能用DOM0级事件,即onerror接受3个参数:错误信息,错误所在的URL和行号(大多数情况下,只有错误信息有用)

4. 图像也支持error事件

// 图像支持error事件
var image = new Image();
image.addEventListener(‘error‘, function (event) {
alert("image not load");
}, false);
image.src = "smile.gif"; //指定不存在的图像

5 js中常见的错误类型

  • 1. 类型转化错误:发生在使用了某个操作符(如js中的(==)和(!=)或者if while等流控制语句中的非布尔值)
  • 2. 数据类型错误 (在使用变量和函数参数之前,要检查数据类型是否会造成错误)
  • 3. 通信错误 js与后台服务器的通信
  • 注意:将数据发送给服务器之前(通过url),使用encodeURLComponent()对数据进行编码

6.把错误记录到服务器上
集中保存错误日志,一边找到错误原因

// 记录错误到服务器
function logError(sev, meg) {
//第一个参数说明表示错误的严重程度 meg值错误的类型自定义的信息
var img = new Image();
img.src = "log.php?sev=" + encodeURIComponent(sev) + "&meg=" + encodeURIComponent(meg);
}
var array = [];
for (var index = 0; index < array.length; index++) {
try {
array[i].init();
} catch (error) {
logError("nonfatal", "module init failed:" + error.message);
}
}

7.console对象具有下列方法:

  • error(message) 错误信息记录在控制台
  • info(message) 将信息性消息记录到控制台
  • log(message) 将一般消息记录到控制台
  • warn(message) 将警告消息

8.// 一般对于大型程序 自定义错误都是通过assert()函数抛出

function assert(condition, message) {
if (!condition) {
throw new Error(message);
}
}
// 运用
function divide(num1, num2) {
assert(typeof num1 == "number" && typeof num2 == "number", "divide():both arguments must be numbers");
return num1 / num2;
}

9. 当使用innerHTML和outerHTML以下列方法指定HTML时,就会发生未知运行错误(unknown runtime error):

  • 1. 是把块级元素插入行内元素当中
  • 2. 访问表格任意部分(如<table> <tbody>)
时间: 2024-10-12 03:46:08

JS中错误处理的相关文章

js中错误处理的相关知识

错误bug是指程序执行过程中,导致程序无法正常执行的情况. 后果:程序会强行中断退出:     错误处理:                即使程序出现错误,也保证程序不异常中断的机制. 一般的使用的代码如下: try{//始终执行            //可能出现的代码 }catch(err){//只有发生错误时才执行:                         出错时执行的错误处理代码-----通知用户,记录日志,保存进度.                         err:错误

js中错误处理机制

1.基本知识 1. 错误对象 Error,SyntaxError,RangeError, ReferenceError,TypeError,URIError 上面的都是构造函数: new 命令可以生成错误实例对象:可以传入描述作为参数,成为实例对象的message属性: 除了message属性,还有两个非标准属性(name, stack)stack是调用栈 var err = new Error("错误实例"); err.message; // "错误实例" err

Node.js权威指南 (10) - Node.js中的错误处理与断言处理

10.1 使用domain模块处理错误 / 272 10.1.1 domain模块概述 / 272 10.1.2 创建并使用Domain对象 / 274 10.1.3 隐式绑定与显式绑定 / 276 10.1.4 绑定回调函数与拦截回调函数 / 279 10.1.5 domain堆栈的弹出与推入 / 280 10.1.6 Domain对象的销毁 / 28610.2 Node.js中的断言处理 / 286 10.2.1 equal方法与notEqual方法 / 287 10.2.2 strictE

eclipse中加放js文件报js语法错误解决办法

1) eclipse设置         window->preference-> JavaScript -> Validator->Errors/Warnings->Enable Javascript Sematic validation前面的钩号去掉 2) .project文件    下面的代码删除 <buildCommand> <name>org.eclipse.wst.jsdt.core.javascriptValidator</name

js中的window.open返回object的错误

系统中用javascript中的window.open后,页面返回了一个[object].因为系统的原因,必需使用href="javascript:window.open()"这样的格式.所以只能通过以下办法解决. 解决window.open后返回object的错误 <a href="javascript:void(window.open('','','width=200,height=200'))">window.open()</a> 只在

[js]js中6种错误处理机制

js中6种错误 http://javascript.ruanyifeng.com/grammar/error.html#toc5 https://www.jianshu.com/p/467b9a145dcc try cache try { console.log(x); }catch (e) { console.dir(e); } console.log('还可以执行') try { console.log(x); }catch (e) { console.dir(e); throw new E

js中return;、return true、return false;区别

一.返回控制与函数结果, 语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果  二.返回控制, 无函数结果,语法为:return;  在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页.    Return False 就相当于终止符,Return True 就相当于执行符.    在js中return false的作用一般是用来取消默认动作的.比如你单击一

js中const,var,let区别

今天面试,被问了个问题,const, var, let的区别,当时就懵圈了,var 知道,const.let 是什么鬼??? 回来一百度,找到一篇通俗易懂的介绍,先取之收藏,以备忘.主要内容是:js中三种定义变量的方式const, var, let的区别. 摘自:http://www.cnblogs.com/ksl666/p/5944718.html 1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始化 3 c

JS中NULL和undifined区别及NULL的作用

1.博客地址:http://www.cnblogs.com/eastday/archive/2010/03/03/1677324.html 2.参考地址2:https://www.zhihu.com/question/35677602/answer/63984217 JS中Null与Undefined的区别 在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined?