使用 try catch 防止页面报错而卡死

try

{

//执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容

catch

{

//除非try里面执行代码发生了异常,否则这里的代码不会执行

finally

{

//不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally  

}

try-catch错误处理表达式允许将任何可能发生异常情形的程序代码放置在try{}程序代码块进行监控,真正处理错误异常的程序代码则被放置在catch{}块内,一个try{}块可对应多个catch{}块。可以通过多个catch语句进行捕获异常。

 

const transfromedDataDetail: DataManagement.typeTransfromedDataDetail = useMemo(() => {

        // @ts-ignore

        const transfromedDataDetail: DataManagement.typeTransfromedDataDetail = {

            ...DataDetail, //这里使用解构赋值,为什么transfromedDataDetail不能识别,有没有其他更好的办法

            updateTM: (() => {

                let period: {

                    [key: string]: any

                };

                try {

                    // 这里updateTM历史数据可能和现在数据不兼容,为防止页面报错卡死,需要做用try catch的处理!

                    period = JSON.parse(DataDetail!.updateTM || '{}');

                } catch{

                    period = {}

                }

                return Object.keys(period).reduce((p: any, key: string) => {

                    if (period[key]) {

                        let [date, time] = period[key].split('-');

                        if (key === 'day') {

                            time = date;

                            date = undefined;

                        }

                        p[key] = {

                            checked: !!period[key],

                            time,

                            date,

                        };

                    }

                    return p

                }, {});

            })(),

            dataBusiness: tranformOwer(DataDetail!.dataBusiness),

            dataTechOwner: tranformOwer(DataDetail!.dataTechOwner),

            scope: tranformScope(DataDetail!.scope)

            // scope: DataDetail!.scope

        };

        return transfromedDataDetail;

    }, [DataDetail])

你可能感兴趣的:(react,js)