编写可维护的JavaScript-第10章-抛出自定义错误
2.在JavaScript中抛出错误
throw new Error("Something bad happend")
不要做下面这个事情:
throw "message"
有些浏览器可能不会提示上述消息
3.抛出错误的好处
function getDvis(element) {
if (element && element.getElementByTagName) {
return element.getElementByTagName("div");
} else {
throw new Error("getDivs() : Argument must be a DOM element.");
}
}
任何时候只要element不满足继续执行的条件,就会抛出一个错误明确陈述发生的问题。
抛出错误就像给自己留下为什么失败的便签。
4.何时抛出错误
需要判断最有可能引发错误的是什么。
在不能提前确定函数会被调用的地方的时候,最可能需要抛出错误(类似于jQuery)。
几个经验:
- 修复了一个很难调试的错误,抛出几个错误可以避免再次发生错误
- 希望[某些事情]不要发生的时候,抛出几个关于[某些事情]的错误
- 如果自己写的代码别人会使用,思考他们的使用方式,抛出对应的错误
5.try/catch语句
当try块中发生了错误,程序会直接跳到catch中,并传入一个错误对象。
应该try-catch还是throw:
- 错误应该只在程序深层中抛出
- try-catch在程序应用层使用
- catch里面不要什么都不写,要写处理错误的代码
6.错误类型
try {
// 代码引发错误
} catch (ex) {
if (ex instanceof TypeError) {
// 处理 TypeError 错误
} else if (ex instanceof ReferenceError) {
// 处理 ReferenceError 错误
} else {
// 其他处理
}
}
也可以自己创造自己的错误类型:
function MyError(message) {
this.message = message;
}
MyError.prototype = new Error();
然后再稳稳的catch自己的错误:
try {
// 代码引发错误
} catch (ex) {
if (ex instanceof MyError) {
// 处理自己的错误
} else {
// 其他处理
}
}
浙公网安备 33010602011771号