我们考虑自己创建工具函数,工具函数的错误处理机制让使用者可以忽略错误而不受任何影响,或者选择自行处理错误
首先,我们想要做一个工具函数了,大概这个样子。
const utils = {
foo(fn) {
fn && fn();
}
}
// 当我们使用时
utils.foo(() => {})
没有任何错误处理,如果出错了,需要自己处理
utils.foo(() => {
try {
// ...
} catch (error) {
// ...
}
})
显然一个工具函数,连个错误处理我还要考虑,谁还用啊,我们在工具函数内部自己处理他们
const utils = {
foo(fn) {
try {
fn && fn();
} catch (error) {
// ...
}
}
}
之后还有一个问题,就是,如果有一百个函数,难不成你要写一百个 try... catch.. 吗,显然不可取,于是就有了, 把错误处理封装成函数。
const utils = {
foo(fn) {
handleError()
}
}
function callHandleError(fn) {
try {
fn && fn();
} catch (error) {
console.log(error);
}
}
这样看着还不错,没什么问题,但是,我们默默地把错误处理掉,用户也想瞅瞅错误到底是个啥,那咋整,于是又有了
let handleError = null;
const utils = {
foo(fn) {
callHandleError(fn);
},
registerErrorHandle(fn) {
handleError = fn;
}
}
function callHandleError(fn) {
try {
fn && fn();
} catch (error) {
handleError(error);
}
}
当使用时,就可以
utils.registerErrorHandle((e) => {
// 如果想自己进行错误处理,在这里拿到错误信息
})
// 调用函数
utils.foo(() => {});
在看书的过程中发现一些思路,作为新手程序员,很多东西没有思路,也没有思路来源,看到好的记录下来,这可能就是以后写代码的思路来源了吧,如果没看到这个,可能就是try...catch 一把梭。
参考《Vue.js的设计与实现》