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