为什么要封装全局同步异常处理和异步异常处理呢?
原因简单:在整个项目中,很多地方都要用到异常处理,总不能随处都是try-catch吧
在JavaScript中处理异常无外乎两种方式【try-catch】和【Promise-catch】但是两种应用场合完全不一样!
try-catch----只能处理同步异常【同步和异步不是一个线程,所以同步无法捕捉异步的异常】
Promise-catch----专门为异步提供的异常处理
封装同步异常处理方法:
封装一个全局通用的同步try-catch方法【同步和异步不是一个线程,所以同步无法捕捉异步的异常】
static tryCatchGlobal (asyncFunc) {
try {
return asyncFunc();
} catch (e) {
console.log(`同步异常捕捉_error:${e}`);
}
}
封装异步异常处理方法:
封装一个全局通用的异步Promise的try-catch方法捕捉区块链异步异常错误
static tryCatchGlobalPromise (asyncFunc, errMsg = "区块链异步异常捕捉") {
return new Promise((resolve, reject) => {
// asyncFunc只能是异步方法,且必须返回一个Promise,否则会报错【Promise才有then方法】
return asyncFunc().then((res) => {
resolve(res);
}).catch((error) => {
console.log(`${errMsg}_error:${error}:`);
resolve(null);
});
});
}