Javascript学习笔记12 错误处理和调试

IE、Firefox、Safari、Chrome和Opera等主流浏览器,都具有某种向用户报告JavaScript错误的机制。默认情况下,所有浏览器都会隐藏此类信息,需要开发人员启用报告功能

try-catch语句

基本用法

try{
    // 可能会发生错误的代码
} catch(error){
    // 在错误发生时怎么处理
}
  • 当try块中的任何代码发生了错误,就会立即退出,执行catch块中的代码,这一点和python的try-except语句很像。
  • error对象必须传入,即使你不想使用它,其具有一个message属性,保存着错误消息。

还可以添加finally语句值得注意的是,无论前面try-catch语句块是否出错,最后一定会执行finally语句块的代码,即使前面包含return语句

function test(){
    try{
        return 2;
    }catch(error){
        return 1;
    }finally{
        return 0;
    }
}

以上函数会返回0,而不是2,finally之前的return语句会被忽略

错误类型

  • Error:基类型,所有错误都继承自该类型
  • EvalError:使用eval()函数时发生错误
  • RangeError:数值超出相应范围,例如数组越界等
  • ReferenceError:访问不存在的变量
  • SyntaxError:语法错误
  • TypeError:变量的类型不符合要求,例如传递给函数的参数
  • URIError:使用encodeURI()或decodeURI(),而URI格式不正确时

抛出错误

使用throw操作符,后接任意值,遇到该操作符,代码会立即停止执行,直到有try-catch语句捕获到被抛出的值

throw 12345throw "hello";
throw {name:"123"};

通常抛出某种内置的错误类型,可以更真实地模拟浏览器错误

throw new Error("bad");
throw new SyntaxError("bad");

也可以继承Error类型自定义错误,并抛出

function customError(message){
    this.message = message;
    this.name = "customError";
}

customError.prototype = new Error();

throw new customError("an error");

错误事件

任何没有通过try-catch处理的错误都会触发window对象的error事件。该事件不会创建event对象,而是接受三个参数:错误消息,错误所在的URL以及行号。要指定error事件处理程序,必须使用DOM0级技术。

window.onerror = function(message,url,line){
    alert(message);
    return false;   //通过返回false,阻止浏览器报告错误的默认行为
};

图像也支持error事件,当图像不能识别图像格式时,触发,此时会返回一个以图像为目标的event对象

var image = new Image();
image.onerror = function(evnet){
    alert("123");
};

调试

通过console对象向Javascript控制台写入消息,这个对象具有以下方法

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

可以使用assert()函数抛出错误信息,该函数接受两个参数,一个逻辑表达式和一个字符串。当逻辑表达式为false时,则输出传入的字符串(一般为错误消息)

console.assert(1==2,"1不等于2");

猜你喜欢

转载自blog.csdn.net/zjw_python/article/details/79876409