try..catch 不能捕获的错误有哪些?注意事项又有哪些?

本文介绍了JavaScript中的错误处理机制,重点讲解了try..catch..finally..throw的使用,包括其在语法错误、异步代码中的限制。同时,探讨了在Promise中如何进行错误处理,并提醒了在编写代码时应注意的事项,如避免只使用catch而没有try,以及在异步操作中正确处理异常。
摘要由CSDN通过智能技术生成

今天的内容中,我们来学习一下使用trycatchfinallythrow进行错误处理。我们还会讲一下 JS 中内置的错误对象(ErrorSyntaxErrorReferenceError等)以及如何定义自定义错误。

1.使用 try..catch..finally..throw

在 JS 中处理错误,我们主要使用trycatchfinallythrow关键字。

  • try块包含我们需要检查的代码
  • 关键字throw用于抛出自定义错误
  • catch块处理捕获的错误
  • finally 块是最终结果无论如何,都会执行的一个块,可以在这个块里面做一些需要善后的事情

1.1 try

每个try块必须与至少一个catchfinally块,否则会抛出SyntaxError错误。

我们单独使用try块进行验证:

try {
  throw new Error('Error while executing the code');
}
ⓧ Uncaught SyntaxError: Missing catch or finally after try

1.2 try..catch

建议将trycatch块一起使用,它可以优雅地处理try块抛出的错误。

try {
  throw new Error('Error while executing the code');
} catch (err) {
  console.error(err.message);
}
➤ ⓧ Error while executing the code

1.2.1 try..catch 与 无效代码

try..catch 无法捕获无效的 JS 代码,例如try块中的以下代码在语法上是错误的,但它不会被catch块捕获。

try {
  ~!$%^&*
} catch(err) {
  console.log("这里不会被执行");
}
➤ ⓧ Uncaught SyntaxError: 
在使用 C++ 中的 try-catch 语句时,需要注意以下几点: 1. try-catch 语句的语法:try 块中包含可能会抛出异常的代码,catch 块中包含处理异常的代码。catch 块中可以有多个不同类型的异常处理程序。 2. try-catch 语句的执行顺序:当 try 块中发生异常时,程序会跳转到与之匹配的 catch 块并执行对应的异常处理程序。如果没有匹配的 catch 块,则程序会终止。 3. 异常处理程序的顺序:在 catch 块中定义多个异常处理程序时,这些处理程序的顺序很重要。如果一个异常可以匹配到多个处理程序,则会选择第一个匹配的处理程序。因此,应该按照从特殊到一般的顺序定义异常处理程序。 4. 异常的类型:在 try 块中抛出的异常必须是可以被 catch 块中的异常处理程序捕获的类型。如果抛出的异常类型不是 catch 块中指定的类型,则该异常会继续向上层传递,直到被捕获或者程序终止。 5. 异常的捕获范围:try-catch 块的作用域只在其内部,因此异常只能在其内部被捕获和处理。如果异常在 try 块外抛出,则无法被 try-catch捕获。 6. 异常的再次抛出:在 catch 块中,可以使用 throw 语句重新抛出异常,以便在上层处理。如果需要重新抛出异常,应该在 catch 块的最后使用 throw 语句,并且不带任何参数。 以上是 C++ 中使用 try-catch 语句时需要注意的几点。需要特别注意的是,try-catch 语句应该尽可能地用于处理预期的异常,不要用于处理常规的程序逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值