typescript - typescript 中的 "throw(e)"和 "throw e"有区别吗?

标签 typescript exception-handling

我找不到关于 typescript 中抛出语法的任何信息,所以我只是想知道这两者在语义上是否相同?从我测试过的情况来看,这两种方法都保留了调用堆栈。

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# 中这样做会破坏调用堆栈,所以我只想绝对确定。正确的 C# 方法是这样的:

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

最佳答案

TypeScript(和 javascript)中的

throw 可以抛出任意表达式。与 ifwhilefor 不同,throw 后面可以紧跟表达式,而无需将表达式包围在 ().

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

e

(e)

关于typescript - typescript 中的 "throw(e)"和 "throw e"有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49764616/

相关文章:

javascript - NextJS中如何读取FormData

typescript - 在类型检查之前转换 typescript

reactjs - 如何定义可能未定义的类型

javascript - 如何将 unix 时间戳转换为 TypeScript 中的日期?

c++ - 关于 C++ 中的结构化异常 (SEH),我应该了解什么?

design-patterns - 异常处理策略——重用异常代码

.net - 防止 WebBrowser 控件吞下异常

php - trigger_error 与抛出异常

java - 我想从抛出Java程序的当前异常中提取一个字符串

node.js - 如果我希望我的 graphql 端点不是 `/graphql` ,如何使用 `GraphqlModule` 配置它?