打字稿中的“throw(e)”和“throw e”之间有区别吗?

时间:2018-04-11 00:20:48

标签: typescript exception-handling

我找不到有关打字稿中抛出语法的任何信息,所以我只是想知道这两个语义是否在语义上相同?从我测试过的两种方法都保留了callstack。

try {
    throw new Error("You can't recover from this.");
} catch (e) {
    console.error(e);
    throw e;
}
try {
    throw new Error("You can't recover from this.");
} catch (e) {
    console.error(e);
    throw(e);
}

在C#中这样做会踩到callstack,所以我只想绝对肯定。正确的C#方式是:

try {
    throw new Exception("You can't recover from this.");
catch (Exception e)
    _logger.LogError(e);
    throw;
}

1 个答案:

答案 0 :(得分:5)

TypeScript(和javascript)中的

throw可以抛出任意表达式。与ifwhilefor不同,throw可以立即跟随表达式,而不会围绕()中的表达式。

从表达语义的角度来看,这两个表达式是相同的:

e

(e)