如何解决 TypeScript 中 try catch 过多的问题?
我们可以使用 try-catch 语句来解决 TypeScript 中的错误。有时,我们需要在代码中添加多个 try-catch 块来处理多个错误。
当我们在代码中添加多个 try-catch 语句时,代码变得不可读,开发人员重构起来会很头疼。在本教程中,我们将学习将过多的 try-catch 块转换为可以管理多个错误的单个 try-catch 块。
语法
用户可以按照以下语法在 TypeScript 中使用单个 try-catch 块。
try { throw new Error("error_message"); // 此代码将不会被执行 } catch (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) { // 在 try 块中调用回调函数 try { func(); } catch (error) { console.log(error.message); } } // calling functions solveProblems(func2); solveProblems(func3);
编译后,它将生成以下 JavaScript 代码 -
function func2() { throw new Error("This error is from second function!"); } function func3() { var num = 10; num.toPrecision(1000); } function solveProblems(func) { // 在 try 块中调用回调函数 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 块来删除它。用户只需为每个单独的代码块创建一个单独的函数,然后可以在单个 try 块中逐个调用每个函数即可。