javascript - 无法处理角度 2+ 中的意外错误
问题描述
在这里我正在尝试一个功能,将有一个文件上传,我可以上传一个 JSON 文件,数据将被发布到一个 textarea,我们也可以在按下按钮后在这里输入 JSON 结构,数据将被传输到另一个 textarea 将删除所有空白和新行等。所有这些工作正常,但我的问题是如果我输入普通文本并按回车,那么它会给我错误,比如意外令牌
下面是我正在使用的 JSON 结构
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
}
]
下面是我的堆栈闪电战代码
https://stackblitz.com/edit/angular-zgyxet
如果我输入 JSON 结构,它工作正常,但如果我输入纯文本,它会给出错误,如何处理这个错误,以便我可以向用户发出警报。
解决方案
错误消息来自 JSON.parse() 方法,因为我们无法将普通字符串解析为 JSON(即不是 JSON 格式的字符串)。
请将您的 JSON.parse() 方法放在 try/catch 块中,如下所示:
test() {
var data = this.TextData;
var dataInfo = data.replace(/\s+/g, '').trim();
var info = '';
try {
var info = JSON.parse(dataInfo);
} catch(e) {
alert('JSON parse error');
}
this.TextData1 = info;
}
推荐阅读
- c - 使用 C API 的 lotus notes 的完全访问管理模式
- android - Android 6 和 5 上的 Firebase InApp 消息传递崩溃
- javascript - 触摸 Ar.js 中的 ar 对象
- angular - 如何使 Angular 模拟服务可摇树
- sql - 在 SELECT 语句中动态设置变量
- c++ - 在 Windows 中使用 VS 代码 C++ tasks.json 编译 cpp 文件
- azure - 何时停止或删除 Azure 容器实例
- docker - 在 AWS ECR 中扫描 Docker 映像时 Linux 内核的漏洞
- android - onDependentViewChanged 仅在依赖项的可见性更改时调用一次
- javascript - 打字稿,将函数数组转换为所有返回值的合并类型