编写可维护的代码规则第3篇。
在js开发中,调试错误是一个比较头疼的事,又不像java的debug那么方便,定位错误往往不是那么容易,除非对代码熟悉无比,但即使是自己写的代码,功能一复杂,时间一长,再想快速定位问题,至少我现在是比较头疼的。此时,如果有一个比较友好的错误提示,那解决问题的效率将大大提高。
所以是时候学会在合适的地方抛出错误提示了。
js中抛出错误的方法有两种:throw new Error()
抛出错误和try...catch..
捕获错误。
先来看throw new Error()
:
function getDiv(el){
if(el && el.getElementsByTagName){
return el.getElementsByTagName('div');
}else {
throw new Error('getDiv(): Argument must be a Dom Element.')
}
}
var div = document.getElementById('div1');
getDiv(null); // Uncaught Error: getDiv(): Argument must be a Dom Element.
上例打印结果可知,明确给出了方法调用的错误提示。当getDiv()
方法的参数传入不符合要求时,就会抛出错误提示。
Error
类型在所有的javascrit实现中都是有效的,它的构造器只接收一个参数,即错误消息。当以这种方式抛出错误时,如果没有经try-catch
语句来捕获的话,浏览器通常直接在控制台显示错误消息字符串。
通常在抛出的错误提示字符串中,应尽量写清错误目标和原因。这样做,当实际调试时,能明确告诉开发者问题的定位。
那什么时候需要抛出错误呢?
再来看下try-catch
语句:
try {
throw new Error("wrong msg.");
} catch(err) {
console.log('catch msg: ' + err);
} finally {
console.log('finally msg.');
}
当try
块中发生错误时,程序立即停止执行,并跳转到catch
块中,并传入一个错误对象。至于后面的finally
块,不管前面是否有错误发生,最终都会执行。
最后再来看看常见的错误类型。
eval()
函数执行代码发生错误时抛出null
对象引用上调用一个函数。eval()
函数传递的代码中有语法错误时抛出new 10
或 "prop" in true
encodeURI()
、encodeURIComponent()
、decodeURI
或decodeURIComponent()
等函数传递格式非法的URI字符串时抛出
-------------------------------- 热门文章 --------------------------------
设计模式>>>