我找不到有关打字稿中抛出语法的任何信息,所以我只是想知道这两个语义是否在语义上相同?从我测试过的两种方法都保留了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;
}
答案 0 :(得分:5)
throw
可以抛出任意表达式。与if
,while
和for
不同,throw
可以立即跟随表达式,而不会围绕()
中的表达式。
从表达语义的角度来看,这两个表达式是相同的:
e
和
(e)