C++ lambda 表达式中如何处理异常?

在 lambda 表达式中处理异常:可以通过捕获列表捕获外部范围中的异常。可以使用 throw 语句抛出异常,无需指定异常类型。使用 try-catch 块可以捕获 lambda 表达式抛出的异常。

C++ lambda 表达式中如何处理异常?

C++ 中 Lambda 表达式中处理异常

C++ 11 引入了 lambda 表达式,提供了一种简短且简洁的方式来创建匿名函数。但是,当在 Lambda 表达式中处理异常时,存在一些细微差别。

捕获异常:

立即学习“C++免费学习笔记(深入)”;

Lambda 表达式可以捕获外部范围中的异常,就像普通函数一样。使用捕获列表 ([]) 指定要捕获的异常类型:

[] (int a, int b) -> int {  try {    // 代码块  }  catch (const std::exception& ex) {    // 异常处理  }}(a, b);

抛出异常:

Lambda 表达式也可以抛出异常。使用 throw 语句直接抛出异常,无需指定异常类型:

[] (int a, int b) -> int {  if (a < b)    throw std::invalid_argument("a 必须大于等于 b");}(a, b);

实战案例:

考虑一个需要计算两个数之和的 Lambda 表达式:

auto sum = [] (int a, int b) -> int {  if (a < 0 || b < 0) {    throw std::invalid_argument("输入值必须非负");  }  return a + b;};

使用此 Lambda 表达式,我们可以使用 try-catch 块来捕获可能抛出的异常:

int main() {  int a, b;  std::cin >> a >> b;    try {    int result = sum(a, b);  }  catch (const std::invalid_argument& ex) {    std::cout << ex.what() << std::endl;  }  return 0;}

在运行此代码段时,如果用户输入负数,将抛出 invalid_argument 异常,并在屏幕上打印相应的错误消息。

以上就是C++ lambda 表达式中如何处理异常?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1457740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月18日 09:58:15
下一篇 2025年12月18日 09:58:26

相关推荐

发表回复

登录后才能评论
关注微信