We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optional catch binding 提议目前处于 Stage 3,这篇文章就是来解释一下它是如何工作的。
我们平时使用try catch时,一般都是如下姿势:
try catch
try { ··· } catch (error) { ··· }
可是当我们不需要error参数时,也并不能将其省略。因为 js 并不允许以下的语法:
error
try { ··· } catch() { ··· }
那么,此提议的意义就是当你不需要error参数时,可以将其省略:
try { ··· } catch { ··· }
JSON.parse()
使用JSON.parse()时,如果传给它的是一个非预期类型值,一般它就会抛异常:
> JSON.parse('abc') SyntaxError: Unexpected token a in JSON at position 0
针对此情况,你可以这样处理:
let jsonData; try { jsonData = JSON.parse(str); // (A) } catch { jsonData = DEFAULT_DATA; }
但是,这种使用方式会引起另外一个问题。当 A 行代码报错时,它会被静默忽略,即使你可能只是一个拼写错误。这个问题也曾经困扰过我很长时间。因此,我更倾向于使用以下带有条件的抛出异常:
let jsonData; try { jsonData = JSON.parse(str); } catch (err) { if (err instanceof SyntaxError) { jsonData = DEFAULT_DATA; } else { throw err; } }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Optional catch binding 提议目前处于 Stage 3,这篇文章就是来解释一下它是如何工作的。
概述
我们平时使用
try catch
时,一般都是如下姿势:可是当我们不需要
error
参数时,也并不能将其省略。因为 js 并不允许以下的语法:那么,此提议的意义就是当你不需要
error
参数时,可以将其省略:使用场景
场景1:
JSON.parse()
使用
JSON.parse()
时,如果传给它的是一个非预期类型值,一般它就会抛异常:针对此情况,你可以这样处理:
但是,这种使用方式会引起另外一个问题。当 A 行代码报错时,它会被静默忽略,即使你可能只是一个拼写错误。这个问题也曾经困扰过我很长时间。因此,我更倾向于使用以下带有条件的抛出异常:
场景2:属性链
原文链接
The text was updated successfully, but these errors were encountered: