您的位置:首页 > 文旅 > 旅游 > throw 和return的区别,A函数里面执行B函数 B函数异常后 不再执行A函数

throw 和return的区别,A函数里面执行B函数 B函数异常后 不再执行A函数

2024/7/6 20:21:07 来源:https://blog.csdn.net/weixin_45776545/article/details/140135844  浏览:    关键词:throw 和return的区别,A函数里面执行B函数 B函数异常后 不再执行A函数
function aFun() {try {bFun();console.log(22222222222);} catch (e) {// 如果bFun中抛出异常,中止aFun的执行console.log(e.message);}
}function bFun() {let a = 1, b = 1;if (a === b) {throw new Error('Stopped by bFun'); // 抛出异常,停止aFun}// bFun 中可能还有很多代码console.log('Executing rest of bFun');
}// 测试调用
aFun(); // 此时将不会输出22222222222, 而是输出Stopped by bFun

throwreturn 是 JavaScript 中两种完全不同的控制流机制,使用它们的区别主要在于它们的目的和作用范围:

return

  • 目的:用于从函数中返回一个值,并终止该函数的执行。
  • 作用范围:仅在函数内有效。
  • 使用场景:在需要从函数中返回一个值或提前退出函数时使用。
function exampleReturn() {console.log("Before return");return "Returning value"; // 返回值,并终止函数执行console.log("After return"); // 不会执行
}let result = exampleReturn();
console.log(result); // 输出: "Returning value"

throw

  • 目的:用于抛出一个异常,终止当前代码的执行,并将控制权交给最近的异常处理器(通常是 try...catch 语句)。
  • 作用范围:可以在任何地方使用,不局限于函数内部;会传播到调用堆栈的上层,直到找到一个 catch 块来处理它。
  • 使用场景:在遇到错误或异常情况时使用,需要停止执行并通知调用者有错误发生。
function exampleThrow() {console.log("Before throw");throw new Error("An error occurred"); // 抛出异常,终止执行console.log("After throw"); // 不会执行
}try {exampleThrow();
} catch (e) {console.log(e.message); // 输出: "An error occurred"
}

主要区别

  1. 控制流

    • return:仅影响当前函数的执行,终止函数并返回指定值。
    • throw:影响整个调用堆栈,抛出异常并将控制权交给最近的异常处理器。
  2. 使用目的

    • return:用于正常的函数返回。
    • throw:用于异常处理,表示错误或异常情况。
  3. 后续代码执行

    • return:函数中的代码在 return 之后不会执行,但 return 之后的代码在调用堆栈上层的代码会继续执行。
    • throw:不仅终止当前函数的执行,还会影响调用堆栈的上层代码,直到找到一个 catch 块来处理异常。

结合以上区别,当你希望在某个条件下中止函数的执行并向调用者返回一个特定值时,使用 return。当你遇到错误或异常情况,需要停止执行并通知调用者有错误发生时,使用 throw

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com