try catch捕获异常

try/catch主要用于捕获异常,try/catch语句包含了yigebtry块,和至少有一个catch块或者饿一个finally块,有如下三种tyr声明:

  • try...catch
  • try...finally
  • try...catch...finally
    try中放入可能会产生异常的语句或函数
    catch块中包含要执行的语句,当try中抛出异常时,catch块会捕获这个异常信息,并执行catch块中的代码,如果在try中没有异常抛出,catch块将会跳过。

finallytry块和catch块之后执行,无论是否有异常抛出或者是否被捕获它总是执行。当在finally中抛出异常信息时会覆盖try中的异常信息。

try {
    tryCode - 尝试执行代码块
}
catch(err) {
    catchCode - 捕获错误的代码块
} 
finally {
    finallyCode - 无论 try / catch 结果如何都会执行的代码块
}

try…catch是同步代码,只能捕获“同步代码”中的"运行时异常","同步代码"是无法获取如setTimeout、Promise等异步代码的异常

 try {
    console.log(1);
    setTimeout(function(){
       console.log(2);
       throw new Error("This is a test error 2");
    }, 0);
    console.log(3);
  } catch(err) {
  }
 console.log(4);
// 执行结果为:1、3、4、2

假如 try {} catch(err) {} 这部分代码为函数f1,setTimeOut里面定义的异步函数,要在f1执行完之后才会执行,所以f1里面的catch是抓不到错误。
try ... catch 作为同步代码的异常捕获语句,是在阶段 1 执行的。异步的错误,发生阶段 2,由此可知:已经执行完毕的 try ... catch 不可能捕获到在它执行完毕后所发生的错误。

你可能感兴趣的:(try catch捕获异常)