js-错误处理与调试,JSON
错误处理与调试:
1、try-catch
try{
window.someNoneXistentFunction();
}catch(error){
alert(error.message)
}
2、finally子句一经使用,就会执行
try{
return 2;
}catch(error){
return 1;
}finally{
return 0;
}
3、throw操作符:随时抛出自定义错误,遇到throw操作符时,就会立即停止执行,仅当有try-catch语句捕获到被抛出的值时,代码才会继续执行
throw new Error(“zzzzz”);
4、关于原型继承
function CustomError(message){
this.name="CustomError";
this.message=message;
}
CustomError.prototype=new Error();
throw new CustomError("My message");
5、error事件
EventUtil.addHandler(image,"error",function(event){
alert("image not loaded!");
});
image.src="zhang.gif";//指定不存在的文件
6、基本类型的值使用typeof检测,对象的值使用instanceof检测
7、错误日志:
function logError(sev,msg){
var img=new Image();
img.src="log.php?sev="+encodeURIComponent(sev)+"&msg="+
encodeURIComponent(msg);
}
for(var i=0,len=mods.length;i<len;i++){
try{
mods[i].init();
}catch(ex){
logError("nonfatal","Module init failed:" + ex.message);-- nonfatal表示错误的严重程度
}
}
Json:
1、json的语法可以表示以下三种类型的值:
简单值:字符串,数值,布尔值,null,不支持undefined
对象:
数组:
不支持变量,函数以及对象实例
json字符串必须使用双引号
2、对象:
{
"name":"zhang",
"age":29,
"school":{
"name":"zzz",
"location":"zzzzzz"
}
} ----没有分号
3、Json对象有两个方法:
stringify():把js对象序列化为JSON字符串
parse():将JSON字符串解析为js值
var book={
title:"aaaa",
authors:["aaaa"],
edition:3,
year:2011
};
var jsonText=JSON.stringify(book);
// jsonText是不包含任何空格字符或缩进
var bookCopy=JSON.parse(jsonText);
4、stringify()还可以接受另外一个参数:
第一个;
var jsonText=JSON.stringify(book,[“title”,”edition”]);
第二个:
函数,函数接收两个参数,属性名以及属性值
5、字符串缩进:--- stringify()的另一个参数
var jsonText=JSON.stringify(book,null,4);
最大缩进空格为10
不仅仅可以传空格:
var jsonText=JSON.stringify(book,null,“--”);
5、toJSON()方法:
var book={
title:"aaaa",
authors:["aaaa"],
edition:3,
year:2011
toJSON:function(){
return this.title;
}
};
var jsonText=JSON.stringify(book);
6、解析选项:
JSON.parse()方法也可以接收另一个参数,是一个函数(还原函数):
如果还原函数返回的是一个undefined,则表示要从结果中删除相应的键,如果返回其它值,则将该值插入到结果中
var book={
title:"aaaa",
authors:["aaaa"],
edition:3,
year:2011
releaseDate:new Date(2011,11,1)
};
var jsonText=JSON.stringify(book);
var bookCopy=JSON.parse(jsonText,function(key,value){
if(key=="releaseDate"){
return new Date(value);
}else{
return value;
}
});
alert(bookCopy.releaseDate.getFullYear());