gpt4 book ai didi

javascript - 有没有一种更简单的方法可以在不捕获的情况下进行单行尝试?

转载 作者:数据小太阳 更新时间:2023-10-29 06:04:09 24 4
gpt4 key购买 nike

当我做这样的事情时:

let resolved = null;
try {
resolved = require.resolve(modulePath)
} catch (e) {

}

我想知道是否有更短的语法,例如:

let resolved = null;
try resolved = require.resolve(modulePath)

有没有办法在不打开 catch block 的情况下原谅这一行?

有这样的东西,但我正在寻找更自然的东西:

function t (fn, def) {
let resolved = def;
try {
resolved = fn()
} catch (e) {

}
return resolved;
}

最佳答案

没有; JavaScript try block 必须有 catchfinally 是有意为之的。来自 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch#Description :

The try statement consists of a try block, which contains one or more statements. {} must always be used, even for single statements. At least one catch clause, or a finally clause, must be present.

(注意 try { ... } finally { },没有 catch相反你想要的:你希望一切都被捕获和吞噬,而 try { ... } finally { } 没有捕获任何东西。)


在你的情况下,我认为最好的写法是:

let resolved;
try {
resolved = require.resolve(modulePath);
} catch (e) {
resolved = null;
}

清楚地表明 resolved == null 是错误情况。

(更好的是 - 添加一些逻辑以确保您捕获的异常确实是您所期望的异常。您可能不想静静地吞下由意外错误导致的异常!)

关于javascript - 有没有一种更简单的方法可以在不捕获的情况下进行单行尝试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53991618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com