data = (typeof event.data === 'string') ? JSON.parse(event.data) :event.data;
如果 event.data 是个乱七八糟的东西会报。。
try catch 不就可以把异常吃掉了吗?
可以 catch 到,但是后面还是会进业务流程一样会报,有没有办法防患于未然(例如把后端祭天)
```js
function isJsonString(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
```
能吃掉往后跑,但是后面进业务流程对象没法用一样会报错,目标是在发现异常时给他个缺省值防止后面出事,类似 undefined || “”这种。。。
你都 catch 到了为啥还让这个有问题的数据进业务流程…,直接把这个有问题的丢了不行吗
如果你看到了异常,自然就知道后面的业务不应该继续了。
如果你还想继续,那差不多是厨房瓦斯爆炸之后你开始用瓦斯当米饭来炒菜的感觉。
不存在防患于未然的方法,因为用户可能会不小心踢了网线。
把后端祭天(确信
你的提问包含两个逻辑:合法,JSON.parse 可以解析。正确的顺序应当是:JSON.parse 可解析,合法。第一个逻辑直接 try catch,第二个逻辑需要校验解析后的 json 对象,校验如果觉得麻烦可以使用 json schema,这是很多牛逼的库都在使用的,如: webpack。
老哥,都检测出错误了,还往下走不是找不自在吗?
吞掉错误你会更后悔
这只能说明数据的源头就有问题,这种异常是不可恢复的,就不要想着 catch 以后能够恢复正常流程,catch 只是为了让你给用户一些友好提示或者回收一些资源
你的问题在于
不知道如何正确处理异常
而你却想消除异常
干掉提问题的人,问题就没有咯
使用正则表达式检测内容是否包在{}里面, 不能完全百分百'验证, 还得再加一层 try catch