我有一些抛出Error的代码。这段代码正确还是我在语法上做错了什么?这是throw new Error()的默认行为,还是我做错了什么?请帮我。

function Test1(test: boolean): boolean | never {
    if (test === true)
        return false;

    throw new Error();
}
Test1(false);
这将产生以下输出:
/home/midhun/typescriptexamples/typescriptexample.js:79
    throw new Error();
    ^

Error
    at Test1 (/home/midhun/typescriptexamples/typescriptexample.js:79:11)
    at Object.<anonymous> (/home/midhun/typescriptexamples/typescriptexample.js:81:1)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47
我的最后一个问题:如何在TypeScript中捕获此错误?

最佳答案

在JavaScript中(因此在TypeScript中),如果要防止throw n错误使事情崩溃,则需要使用 catch statement对其进行try..catch编码。可能导致错误的代码必须在try块内,而处理错误的代码应该在catch块内:

console.log("Starting up...")
try {
  const ret = Test1(false);
  console.log(ret);
} catch (err) {
  console.log("uh oh, I caught an error", err)
}
console.log("Moving on...");
这会产生类似
/* [LOG]: "Starting up..."
[LOG]: "uh oh, I caught an error",  Error: {}
[LOG]: "Moving on..." */
Playground link to code

10-08 19:48