使用JavaScript try/catch,什么是不处理catch错误消息的干净方法?

使用JavaScript try/catch,什么是不处理catch错误消息的干净方法?,javascript,typescript,Javascript,Typescript,我有一个try/catch JavaScript/TypeScript,如下所示: import ls from 'local-storage'; let user; try { user = ls.get('userInfo'); } catch (e) { user = {}; } 在某些情况下,ls.get()返回无效的JavaScript,这是很正常的情况,我不想报告或记录错误,我只想将用户设置为{},如上所示 也就是说,当本地存储为空时,ls.get会抛出一个错误,我希望

我有一个try/catch JavaScript/TypeScript,如下所示:

import ls from 'local-storage';

let user;

try {
  user = ls.get('userInfo');
} catch (e) {
  user = {};
}
在某些情况下,
ls.get()
返回无效的JavaScript,这是很正常的情况,我不想报告或记录错误,我只想将用户设置为
{}
,如上所示

也就是说,当本地存储为空时,ls.get会抛出一个错误,我希望确保我处理了这种情况并捕获抛出的异常


是否有一个干净或更好的语法来实现这一点?如果我只是说
catch()
,我会得到一个错误。

除了评论中所说的之外,我认为您正在尝试使用ECMAScript规范(或JS规范)中没有的东西,但很快就会有:

在此之前,如果没有用于错误的参数(或绑定变量),则会出现错误。但是,您可以将catch代码块保留为空:

let user;

try {
  user = ls.get('userInfo');
} catch (err) {}

编辑:根据

的说法,可选的Catch绑定应该在今年(即“预期的发布年”)发布,除了评论中所说的之外,我认为您正在尝试使用ECMAScript规范(或JS规范)中没有但很快就会有的东西:

在此之前,如果没有用于错误的参数(或绑定变量),则会出现错误。但是,您可以将catch代码块保留为空:

let user;

try {
  user = ls.get('userInfo');
} catch (err) {}

编辑:根据

当你说“无效javascript”时,你是什么意思?根据JS解释器或您自己的代码无效?它实际上是返回一个对象还是一个JSON字符串?为什么您的api首先返回无效的javascript?你为什么认为这是可以接受的?真正的解决方案是阻止api返回无效的javascript(我猜是json)?“如果我只说catch(),我会得到一个错误。”因为你需要一个代码块,即使是空的。使用
catch(){}
catch(err){}
(第一个解决方案可能还不受支持)我更新了问题以包括ls是什么。这不是我的API(本地存储),我发现如果本地存储被半更新(比如用一个空白字符串而不是有效的JSON),ls.get(..)抛出一个错误,我相信我别无选择,只能通过捕获来处理。当你说“无效的javascript”时,你是什么意思?根据JS解释器或您自己的代码无效?它实际上是返回一个对象还是一个JSON字符串?为什么您的api首先返回无效的javascript?你为什么认为这是可以接受的?真正的解决方案是阻止api返回无效的javascript(我猜是json)?“如果我只说catch(),我会得到一个错误。”因为你需要一个代码块,即使是空的。使用
catch(){}
catch(err){}
(第一个解决方案可能还不受支持)我更新了问题以包括ls是什么。这不是我的API(本地存储),我发现如果本地存储被半更新(比如用一个空白字符串而不是有效的JSON),ls.get(…)抛出一个错误,我相信我别无选择,只能通过catch来处理。感谢@Seblor,您的评论实际上非常有用,或多或少验证了我对包含一个从未使用过的绑定变量(代码味道)的担忧。我试着不被投票否决我的问题的人冒犯:(.看来你完全理解了。谢谢@Seblor你的评论实际上非常有用,或多或少验证了我对包含一个从未使用过的绑定变量(代码气味)的担忧。我试着不被投票否决我的问题的人冒犯:)看来你完全明白了。