我有一些抛出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