在js中有些内置方法在使用的时候当传入意外类型参数的时候会报错卡死导致直接让整个项目都跑不起来了。比如:
今天,这里就说一个增加代码强壮性的方法:try catch finally
众所周知,try catch 是处理意外错误时候的语句,主要功能就是 try 方法会尝试去跑它包含下的代码,如果发生错误会立即走到catch里执行catch的方法。说到这里,接下来聊聊它的另外一个小兄弟就是finally。finally的作用就是不管try中的代码是否有问题,都会走finally中的代码,有点像promise的finally。
这里有一个点要说的就是finally里的return会修改try和catch的返回值,也就是说,如果在finally里返回一个true,就算上面报了错误,返回出来的错误信息会被修改为true,那么,相当于我们的错误就好像没有发生一样。这就是今天要讲的点。
好啦,用法讲完了,就来实战一下,这里写了一个小方法来解决我们转json时候出现意外状况时候的解决办法:
const tryParseJson=(val,fn,def=[])=>{
try{
val=JSON.parse(val);
}catch(err){
val=def;
}finally{
fn(val);
return;
}
}
tryParseJson('',val=>console.log(val)); //[]
tryParseJson('{a:1}',val=>console.log(val),{}); //{}
tryParseJson('[\"11:08r\",\"13:42c\"]',val=>console.log(val)); // ["11:08r", "13:42c"]
tryParseJson('{"a":"1"}',val=>console.log(val)); //{a: "1"}
这次要分享的东西就到这里了,感谢观看