【重磅封装】JavaScript之同步异常try-catch处理和异步异常Promise-catch处理之封装全局方法【tryCatchGlobal和tryCatchGlobalPromise】

为何要封装全局同步异常处理和异步异常处理呢?

缘由简单:在整个项目中,不少地方都要用到异常处理,总不能随处都是try-catch吧

 

在JavaScript中处理异常无外乎两种方式【try-catch】和【Promise-catch】可是两种应用场合彻底不同!javascript

try-catch----只能处理同步异常【同步和异步不是一个线程,因此同步没法捕捉异步的异常】java

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);
            });
        });
    }