JavaScript如何处理错误
2016-06-10 21:25
471 查看
1.错误类型:
//RangeError、ReferenceError、TypeError、URIError
try{
someFunction();
}catch(error){
if(error instanceof TypeError){
//处理类型错误
}else if(error instanceof ReferenceError){
//处理引用错误
}else if(error instanceof RangeError){
//处理超出范围错误
}else if(error instanceof URIError){
//处理URI格式错误
}else{
//处理其他类型错误
}
}2.自定义错误类型:
//自定义错误类型
function CustomError(message){
this.name="CustomError";
this.message=message;
}
function process(values){
if(!(values instanceof Array)){
throw new Error('process():参数必须是一个数组。');
}
values.sort();
for(var i=0,len=values.length;i<len;i++){
if(values[i]>100){
return values[i];
}
}
return -1;
}4.避免类型转换错误
//避免在流控制语句中使用非布尔值
function concat(str1,str2,str3){
var result=str1+str2;
if(typeof str3=="string"){
result+=str3;
}
return result;
}5.避免数据类型转换错误
//基本类型的值应该用typeof来检测
function getQueryString(url){
if(typeof url=="string"){
var pos=url.indexOf("?");
if(pos>-1){
return url.substring(pos+1);
}
}
}
//对象的值应该使用instanceof来检测
function reverseSort(values){
if(values instanceof Array){
values.sort();
values.reverse();
}
}6.避免通信错误
//避免通信错误:对于查询字符串,必须要使用encodeURIComponent()方法
function addQueryStringArg(url,name,value){
if(url.indexOf('?')==-1){
url+='?';
}else{
url+='&';
}
url+=encodeURIComponent(name)+'='+encodeURIComponent(value);
return url;
}
//把错误记录到服务器
function logError(sev,msg){
var img=new Image();
img.src='log.php?sev='+encodeURIComponent(sev)+'&msg='+encodeURIComponent(msg);
}
//RangeError、ReferenceError、TypeError、URIError
try{
someFunction();
}catch(error){
if(error instanceof TypeError){
//处理类型错误
}else if(error instanceof ReferenceError){
//处理引用错误
}else if(error instanceof RangeError){
//处理超出范围错误
}else if(error instanceof URIError){
//处理URI格式错误
}else{
//处理其他类型错误
}
}2.自定义错误类型:
//自定义错误类型
function CustomError(message){
this.name="CustomError";
this.message=message;
}
CustomError.prototype=new Error(); throw new CustomError("我的信息");3.抛出错误的时机
function process(values){
if(!(values instanceof Array)){
throw new Error('process():参数必须是一个数组。');
}
values.sort();
for(var i=0,len=values.length;i<len;i++){
if(values[i]>100){
return values[i];
}
}
return -1;
}4.避免类型转换错误
//避免在流控制语句中使用非布尔值
function concat(str1,str2,str3){
var result=str1+str2;
if(typeof str3=="string"){
result+=str3;
}
return result;
}5.避免数据类型转换错误
//基本类型的值应该用typeof来检测
function getQueryString(url){
if(typeof url=="string"){
var pos=url.indexOf("?");
if(pos>-1){
return url.substring(pos+1);
}
}
}
//对象的值应该使用instanceof来检测
function reverseSort(values){
if(values instanceof Array){
values.sort();
values.reverse();
}
}6.避免通信错误
//避免通信错误:对于查询字符串,必须要使用encodeURIComponent()方法
function addQueryStringArg(url,name,value){
if(url.indexOf('?')==-1){
url+='?';
}else{
url+='&';
}
url+=encodeURIComponent(name)+'='+encodeURIComponent(value);
return url;
}
var url="http://www.somedomain.com"; var newUrl=addQueryStringArg(url,'redir','http://www.somedomain.com?a=b&c=d');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('非致命错误','模块初始化失败:'+ex.message); } }
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享