【C++】抛出异常

这篇具有很好参考价值的文章主要介绍了【C++】抛出异常。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

try  throw catch

throw抛出异常

        与return相似,return是正常的返回,throw是异常的返回。

1.设计自己的异常类型

2.通过if语句判断--throw 抛出异常

3.try调用有throw的函数,catch(指定的错误类型 &e)捕获异常对象

throw抛出异常,catch捕获异常,其中catch捕获与()内类型匹配的异常。

catch(...)可捕获任意类型的异常。

void fun(int x,int y)
{
	try
	{
		if (y != 0)
			int t = x / y;
		else
			throw "y is 0";
//throw y;//throw抛出异常
	}
	catch (int n)//捕获异常
    {
    	cout << "n = " << n << endl;
	}
	catch (const char* s)//catch的是throw匹配的异常
	{
		cout << s << endl;
	}
	catch (...)//捕获其他异常
	{
		cout << "error" << endl;
	}
}
int main()
{
	fun(4, 0);
}

【C++】抛出异常

异常的栈展开处理

        若抛出的异常在当前函数中没有被捕获(与catch不匹配),则通过逆调用链回到调用它的函数中寻找匹配的catch,若到main中仍未匹配,由系统terminate终止程序。

        一旦抛出异常,必须有catch处理。

以下代码:fn中的catch不匹配异常,到main中的catch中找到exception&e匹配

void fn()
{
	try
	{
		throw exception("hello");//异常类
	}
	catch (int s)
	{
		cout << s << endl;
	}
}
int main()
{
	try
	{
		fn();
	}
	catch (exception& e)//获取异常对象
	{
		cout << e.what() << endl;//what()为抛出的异常
	}
	catch (...)
	{
		cout << "error" << endl;
	}
}

【C++】抛出异常

        exception是C++标准库中的一个,用于表示程序中发生的异常情况。它有一个成员函数what(),用于返回异常的描述信息。通常在catch块中使用该函数来获取异常的具体信息,以便进行相应的处理。例如:

try 
{ 
// some code that might throw an exception 
} 
catch (const std::exception& e)
{ 
    std::cerr << "Exception caught: " << e.what() << std::endl; 
}

上述代码中,当try块中的代码抛出一个std::exception类型的异常时,catch块中的e.what()会返回该异常的描述信息,并将其输出到标准错误流中。

常用异常类型

C++ 标准库中定义了多种异常类型,常用的有以下几种:

  1. std::exception:所有标准异常的基类,可以通过继承该类来创建自定义的异常类型。
  2. std::bad_alloc:内存分配失败时抛出的异常。
  3. std::out_of_range:访问数组、容器等时索引超出范围时抛出的异常。
  4. std::logic_error:逻辑错误时抛出的异常,如:无效的参数、未实现的方法等。
  5. std::runtime_error:运行时错误时抛出的异常,如:文件不存在、网络连接失败等。

当程序抛出异常时,可以使用 try-catch 块来捕获并处理异常。例如:

复制
try 
{
  // 可能会抛出异常的代码
}
catch (std::exception& e) 
{
  // 处理异常的代码
}

需要注意的是,catch 块的参数类型应该是抛出异常类型的引用,这样才能获取到异常信息。

使用异常处理

1、把错误处理和真正的工作分开来;

2、 代码更易组织,更清晰,复杂的工作任务更容易实现;

3、 更安全了

4、 使得程序的控制流可以安全的跳转到上层(或者上上层)的错误处理模块中去。文章来源地址https://www.toymoban.com/news/detail-453357.html

到了这里,关于【C++】抛出异常的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java try throw exception finally 遇上 return break continue造成异常丢失

        如下所示,是一个java笔试题,考察的是抛出异常之后,程序运行结果,但是这里抛出异常,并没有捕获异常,而是通过finally来进行了流程控制处理。     运行程序,打印结果如下所示:       这里结果有些出人意料,并没有打印异常信息,其实就是try finally遇到了con

    2024年02月08日
    浏览(45)
  • 【C++】抛出异常

    try  throw catch         与return相似,return是正常的返回,throw是异常的返回。 1.设计自己的异常类型 2.通过if语句判断--throw 抛出异常 3.try调用有throw的函数,catch(指定的错误类型 e)捕获异常对象 throw抛出异常,catch捕获异常,其中catch捕获与()内类型匹配的异常。 catch(...)可

    2024年02月05日
    浏览(39)
  • 【C++】异常处理 ① ( 异常概念引入 | 抛出异常语法 | 捕获异常语法 | 异常捕获流程 | 异常处理代码示例 )

    异常是一种 特殊的程序流控制机制 , 用于处理程序中可能出现的错误或异常情况 ; 当程序执行错误时 , 由 throw 抛出异常 , 并即跳转到相应的异常处理程序中 ; 如果没有适当的异常处理程序处理该异常 , 程序会崩溃终止 ; 异常与函数对比 : 函数 是一种 以 栈结构 展开的

    2024年02月04日
    浏览(52)
  • 你真的知道吗?catch、finally和return哪个先执行

    我的一位朋友前阵子遇到一个问题,问题的核心就是try……catch……finally中catch和finally代码块到底哪个先执。这个问题看起来很简单,当然是“catch先执行、finally后执行”了?真的是这样吗? 有下面一段C#代码,请问这段代码的执行结果是什么?   A()方法的try代码块中抛出了

    2024年02月14日
    浏览(34)
  • 抛出异常与声明异常

    抛出异常: throw ,抛出异常是指在方法体内手动抛出异常错误,与系统直接报错相同也会导致程序的异常终止,但是可以自定义异常信息,一般常用于抛出编译期异常(必须做处理) 抛出异常格式: throw new 异常类(异常信息); throw :固定语法 new 异常类(异常信息) :需要抛出的异常

    2024年02月04日
    浏览(85)
  • 啪,还敢抛出异常

    去年又重新刷了路遥的《平凡的世界》,最近也在朋友推荐下,来看了路遥的另一部成名作《人生》。 故事中的主人公高加林,虽生在农村,面朝黄土背朝天,却不甘心像父辈一样或者,一心想着摆脱民语的束缚,追求他的理想生活。 然而命运多舛,在他所想象的理想生活

    2024年03月25日
    浏览(53)
  • 抛出异常时将异常信息返给前端

      全局异常处理器负责将抛出的异常,以统一的格式返给前端。在这里起主要作用的注解是@RestControllerAdvice。 @RestControllerAdvice主要配合@ExceptionHandler使用,统一处理异常情况。 1、@RestControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@Requ

    2024年02月16日
    浏览(50)
  • java~用泛型来定义异常类型,避免方法调用时throws异常

    我们一般在底层写方法时,如果方法显示throws异常,那么在调用时,也需要将这个异常throws出来,例如 调用时 如果调用时不显示throws出异常,编译器会报出错误,如下图 调用方法时,不需要再throws Ex了,这种对调用者更友好,如图 在第一个方法中,使用了泛型类型 来定义

    2024年02月21日
    浏览(40)
  • python中自定义异常/raise关键字抛出异常

    在编程过程中合理的使用异常可以使得程序正常的执行。有直接抛出异常的形式,也能通过捕获异常加入异常时的业务逻辑处理。 创建自定义异常类案例 使用raise抛出异常案例 raise抛出异常主要是为了在特定的条件。 在调用throw_exception函数后,传入值为10时则抛

    2024年02月03日
    浏览(58)
  • java抛出异常后,后续代码是否继续执行

            java 抛出异常后,后面的语句到底是怎么执行的呢?哪些会继续执行,哪些不再执行,这是本章要探讨的问题。为方便广大友友解决问题,先把结论丢出来: 1、有 try-catch 语句块,并且 throw 在 catch 语句块里,那么 try 语句块中引发异常(报错)的那一行代码的后

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包