Typescript 如何解决太多try catch问题
我们可以使用try-catch语句来解决TypeScript中的错误。有时,我们需要在代码中添加一个以上的try-catch块来处理多个错误。
当我们在代码中添加多个try-catch语句时,代码就会变得不可读,对于开发人员来说,重构代码是一件令人头痛的事情。在本教程中,我们将学习如何将过多的try-catch块转换成一个可以处理多个错误的try-catch块。
语法
用户可以按照下面的语法,在TypeScript中使用单个try-catch块。
try {
throw new Error("error_message");
// this code will not be executed
}
catch (error) {
// manage the error
}
在上面的语法中,我们在try块中抛出错误,在catch块中捕捉错误。
每当我们在try块中得到任何错误,执行控制就直接转到catch语句,而不执行其他try块的代码。
例1:太多的try-catch块
在下面的例子中,我们添加了四个try-catch块。我们在每个try-catch块中都抛出了不同信息的错误。
用户可以在输出中看到每个catch块所打印的错误信息。
try {
console.log("Inside the first try block");
throw new Error("first error message");
} catch (error) {
console.log(error.message);
}
try {
console.log("Inside the second try block");
throw new Error("second error message");
} catch (error) {
console.log(error.message);
}
try {
console.log("Inside the third try block");
throw new Error("Third error message");
} catch (error) {
console.log(error.message);
}
try {
console.log("Inside the fourth try block");
throw new Error("Fourth error message");
} catch (error) {
console.log(error.message);
}
编译时,它将生成以下JavaScript代码。
try {
console.log("Inside the first try block");
throw new Error("first error message");
}
catch (error) {
console.log(error.message);
}
try {
console.log("Inside the second try block");
throw new Error("second error message");
}
catch (error) {
console.log(error.message);
}
try {
console.log("Inside the third try block");
throw new Error("Third error message");
}
catch (error) {
console.log(error.message);
}
try {
console.log("Inside the fourth try block");
throw new Error("Fourth error message");
}
catch (error) {
console.log(error.message);
}
输出
上述代码将产生以下输出 –
Inside the first try block
first error message
Inside the second try block
second error message
Inside the third try block
Third error message
Inside the fourth try block
Fourth error message
从上面的例子中,用户可以理解当我们在一段代码中使用过多的try-catch语句时,代码会变得不可读和不清晰。
现在,我们将学习使用单一的try-catch块来处理具有不同错误的多个代码块。
例子2
在下面的例子中,我们创建了solveProblems()函数。它接受一个函数作为参数,并在try块中调用该函数。如果该函数抛出任何错误,我们可以在单个代码块中捕获它。
function func2() {
throw new Error("This error is from second function!");
}
function func3() {
let num = 10;
num.toPrecision(1000);
}
function solveProblems(func: any) {
// calling the callback function in the try block
try {
func();
} catch (error) {
console.log(error.message);
}
}
// calling functions
solveProblems(func2);
solveProblems(func3);
On compiling, it will generate the following JavaScript code −
function func2() {
throw new Error("This error is from second function!");
}
function func3() {
var num = 10;
num.toPrecision(1000);
}
function solveProblems(func) {
// calling the callback function in the try block
try {
func();
}
catch (error) {
console.log(error.message);
}
}
// calling functions
solveProblems(func2);
solveProblems(func3);
输出
上述代码将产生以下输出 –
This error is from second function!
toPrecision() argument must be between 1 and 100
从上面的例子中,用户可以了解到我们如何通过用一个单一的try-catch块代替它来删除多个try-catch块。用户只需要为每一个独立的代码块创建一个单独的函数,并可以在单个尝试块中逐一调用每个函数。