C++中的异常处理机制详解-创新互联

异常处理

创新互联建站成立与2013年,是专业互联网技术服务公司,拥有项目网站设计制作、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元定结做网站,已为上家服务,为定结各地企业和个人服务,联系电话:18980820575

增强错误恢复能力是提高代码健壮性的最有力的途径之一,C语言中采用的错误处理方法被认为是紧耦合的,函数的使用者必须在非常靠近函数调用的地方编写错误处理代码,这样会使得其变得笨拙和难以使用。C++中引入了异常处理机制,这是C++的主要特征之一,是考虑问题和处理错误的一种更好的方式。使用错误处理可以带来一些优点,如下:

错误处理代码的编写不再冗长乏味,并且不再和正常的代码混合在一起,程序员只需要编写希望产生的代码,然后在后面某个单独的区段里编写处理错误的嗲吗。多次调用同一个函数,则只需要某个地方编写一次错误处理代码。

错误不能被忽略,如果一个函数必须向调用者发送一次错误信息。它将抛出一个描述这个错误的对象。

传统的错误处理和异常处理

在讨论异常处理之前,我们先谈谈C语言中的传统错误处理方法,这里列举了如下三种:

在函数中返回错误,函数会设置一个全局的错误状态标志。

使用信号来做信号处理系统,在函数中raise信号,通过signal来设置信号处理函数,这种方式耦合度非常高,而且不同的库产生的信号值可能会发生冲突

使用标准C库中的非局部跳转函数 setjmp和longjmp ,这里使用setjmp和longjmp来演示下如何进行错误处理:

#include 
#include 
jmp_buf static_buf; //用来存放处理器上下文,用于跳转
void do_jmp()
 {
 //do something,simetime occurs a little error
 //调用longjmp后,会载入static_buf的处理器信息,然后第二个参数作为返回点的setjmp这个函数的返回值
 longjmp(static_buf,10);//10是错误码,根据这个错误码来进行相应的处理
 }
int main()
 {
 int ret = 0;
 //将处理器信息保存到static_buf中,并返回0,相当于在这里做了一个标记,后面可以跳转过来
 if((ret = setjmp(static_buf)) == 0) {
 //要执行的代码
 do_jmp();
 } else { //出现了错误
 if (ret == 10)
 std::cout << "a little error" << std::endl;
 }
 }

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:C++中的异常处理机制详解-创新互联
标题URL:http://pwwzsj.com/article/cddjeg.html