当前位置: 首页 > news >正文

铜陵app网站做营销招聘长尾关键词网站

铜陵app网站做营销招聘,长尾关键词网站,杭州小周seo,如何一次性删除wordpress拉圾评论目录 错误处理 异常处理 异常传播 异常规划 标准异常 自定异常 错误处理 在C语言中&#xff0c;错误通常通过函数的返回值来表示。 错误返回值 对于能返回特殊值&#xff08;如NULL或负值&#xff09;的函数&#xff0c;在调用时检查这些值来处理错误。 #include <st…

目录

错误处理

异常处理

异常传播

异常规划

标准异常

自定异常


错误处理

  • 在C语言中,错误通常通过函数的返回值来表示。

  • 错误返回值

    • 对于能返回特殊值(如NULL或负值)的函数,在调用时检查这些值来处理错误。
    • #include <stdio.h>
      #include <stdlib.h>#define DIV_RET_SUCCESS 1
      #define DIV_RET_FAILED  0//C语言中通过函数返回值来判断执行成功与否
      int myDiv(int num1, int num2, int* nRet)
      {if (num2 == 0){*nRet - 0;return DIV_RET_FAILED;}*nRet = num1 / num2;return DIV_RET_SUCCESS;
      }int main()
      {int ret = 0;if (myDiv(10, 2, &ret) == DIV_RET_SUCCESS){printf("%d \r\n", ret);}return 0;
      }
      
  • 错误码全局变量

    • 如 errno​​​,这是一个全局变量,很多标准库函数在出错时会设置这个变量为相应的错误码。
    • #pragma warning(disable:4996)
      #include <stdio.h>
      #include <stdlib.h>
      #include <errno.h>
      #include <string.h>int main()
      {FILE* pFile = NULL;pFile = fopen("0xCC.txt", "r");if (pFile == NULL){printf("ErrorCode -> %d \r\n", errno);printf("ErrorMesg -> %s \r\n", strerror(errno));perror("fopen");}return 0;
      }
      
  • 宏定义

    • 通过宏定义可以创建简单的错误处理代码块,这个方法提供了一种快速插入常用错误处理程序代码的方式。
    • #include <stdio.h>
      #include <stdlib.h>
      #define HANDLE_ERROR(msg) \do { \perror(msg); \exit(EXIT_FAILURE); \} while(0)
      int main() 
      {FILE *fp = fopen("file.txt", "r");if (!fp) {HANDLE_ERROR("Error opening file");}// 其余代码...fclose(fp);return 0;
      }
      

异常处理

  • throw:当问题发生时,程序会抛出一个异常。这是通过 throw​​ 关键字完成的,后面跟着要抛出的异常对象。

    throw ErrorCode
    throw "Erroe"
    
  • try:try​​ 块内的代码是可能产生异常的代码,当其中的代码抛出一个异常时,执行流会跳转到匹配的 catch​​ 块。

  • catch:catch​​ 块会捕获异常,并包含如何处理这些异常的代码。

    try
    {//可能抛出异常的代码
    }
    catch(ExceptionType var)	//根据异常类型捕获
    {//处理匹配异常类型
    }
    catch(ExceptionType var)	//根据异常类型捕获
    {//处理匹配异常类型
    }
    
  • 示例代码

    #include <iostream>int AllocMem()
    {//可能会抛出异常的代码放在try语句块内try{//throw 'A';long long* p = new long long[0xFFFFFFF];//thorw bad_allocation}catch (int exception){std::cout << exception << std::endl;}catch (char exception){std::cout << exception << std::endl;}catch (std::exception exception){std::cout << exception.what() << std::endl;}}int main()
    {AllocMem();return 0;
    }
    

异常传播

  • C++异常传播(Exception Propagation)是指在程序中如果一个函数内发生了异常,而该异常没有在该函数内得到处理,则该异常会被传递到函数调用者处,如果调用者也不处理,则继续传递,这样一直到最顶层调用者。如果最顶层调用者也没有处理异常,则程序可能崩溃。

    • 如果try​​​块内的代码抛出了异常,控制流会跳到第一个匹配的catch​​​块。
    • 如果在当前函数中没有匹配的catch​​​块,异常会被传递给调用该函数的函数,并在那里寻找匹配的catch​​​块。
    • 如果在任一函数中都找不到匹配的catch​​块,程序将调用terminate()​​结束程序。
    #include <iostream>void Fun3()
    {throw 0xCC;
    }void Fun2()
    {try{Fun3();}catch (char exception){std::cout << exception << std::endl;}}void Fun1()
    {try{Fun2();}catch (float exception){std::cout << "Fun1 Exception" << std::endl;}}int main()
    {try{Fun1();}catch (...){std::cout << "Main Exception" << std::endl;}return 0;
    }
    

异常规划

  • 异常规范(exception specification)是C++中的一种功能,它允许开发者指明一个函数可能抛出哪些异常。
  • 自从C++11起,异常规范已经不再被推荐使用,取而代之的是noexcept关键字。
  • ​void someFunction() throw(int, char); ​​// 只能抛出int型和char型异常
  • ​void someFunction() noexcept; ​​// 不会抛出异常
  • #include <iostream>
    #include <vector>//该函数不会抛出任何异常
    void Fun1() throw()
    {}void Fun2() noexcept
    {}void Fun3() throw(int)
    {}void Fun4() throw(char)
    {}void Fun5() throw(char, int)
    {}int main()
    {try{Fun3();}catch (int exception){std::cout << exception << std::endl;}try{Fun4();}catch (char exception){std::cout << exception << std::endl;}try{Fun5();}catch (char exception){std::cout << exception << std::endl;}catch (int exception){std::cout << exception << std::endl;}return 0;
    }
    

标准异常

  • ​std::exception​​ 是各种标准异常类的基础,提供了一个异常层次结构。
  • ​std::logic_error​​

    • 逻辑错误表示程序的逻辑不当导致的问题,这通常是可以预防的错误。
    • ​std::domain_error​​: 当一个数学函数接收到一个不在其定义域内的参数时抛出。
    • ​std::invalid_argument​​: 当传递给函数的参数无效时抛出。
    • ​std::length_error​​: 当创建过大的 std::string​​ 或者 std::vector​​ 时抛出。
    • ​std::out_of_range​​: 当通过 at​​ 访问 std::vector​​ 或 std::string​​ 而下标超出范围时抛出。
  • std::runtime_error​​

    • 运行时错误,表示在程序运行时发现的错误,通常是难以预防的。
    • ​std::overflow_error​​: 当算术运算超过表示范围时抛出。
    • ​std::underflow_error​​: 当算术运算结果在正确的表示范围内,但非正规化时抛出。
    • ​std::range_error​​: 当计算的结果不在可表示的范围内时抛出。
    • ​std::system_error​​: 用于报告系统错误的异常。
  • std::bad_alloc​​

    当动态内存分配失败时(如 new​​ 表达式),std::bad_alloc​​ 被抛出。

  • std::bad_cast​​​

    使用动态转换 (dynamic_cast​​) 转换到不兼容的类型时,抛出 std::bad_cast​​。

  • std::bad_typeid​​​

    当使用类型信息功能(如 typeid​​ 操作符)并且操作的对象是未定义类型时,抛出 std::bad_typeid​​ 异常。

  • ​std::bad_function_call​​​

    当调用一个空的 std::function​​ 对象时,抛出 std::bad_function_call​​ 异常。

  • #include <iostream>int main()
    {try{long long* p = new long long[0xFFFFFFF];}catch (const std::exception& e){std::cout << e.what() << std::endl;}return 0;
    }
    

自定异常

  • #include <iostream>class myException :public std::exception
    {
    public:myException(std::string message): m_Message(message){}virtual const char* what() const{return m_Message.c_str();}private:std::string m_Message;
    };int main()
    {try{myException obj("cc exception");throw obj;}catch (const std::exception& e){std::cout << e.what() << std::endl;}return 0;
    }
    


文章转载自:
http://partisanship.fznj.cn
http://wen.fznj.cn
http://laticiferous.fznj.cn
http://overrule.fznj.cn
http://hollands.fznj.cn
http://layout.fznj.cn
http://cytoclasis.fznj.cn
http://venerate.fznj.cn
http://extrication.fznj.cn
http://chemotaxis.fznj.cn
http://qualified.fznj.cn
http://jicama.fznj.cn
http://continually.fznj.cn
http://proviral.fznj.cn
http://liberatory.fznj.cn
http://edelweiss.fznj.cn
http://ahungered.fznj.cn
http://bemete.fznj.cn
http://unamiable.fznj.cn
http://morning.fznj.cn
http://stinging.fznj.cn
http://catwalk.fznj.cn
http://earthbound.fznj.cn
http://lingula.fznj.cn
http://keester.fznj.cn
http://mayence.fznj.cn
http://hematolysis.fznj.cn
http://phytolite.fznj.cn
http://zussmanite.fznj.cn
http://scutellate.fznj.cn
http://established.fznj.cn
http://teporingo.fznj.cn
http://laterality.fznj.cn
http://inaudibility.fznj.cn
http://shareholding.fznj.cn
http://flection.fznj.cn
http://cartouche.fznj.cn
http://tonsillitic.fznj.cn
http://deposit.fznj.cn
http://pentomino.fznj.cn
http://exophthalmic.fznj.cn
http://weathervision.fznj.cn
http://premo.fznj.cn
http://inconceivably.fznj.cn
http://corpuscule.fznj.cn
http://equatorward.fznj.cn
http://mazdoor.fznj.cn
http://afar.fznj.cn
http://sackbut.fznj.cn
http://pluripotent.fznj.cn
http://thelma.fznj.cn
http://michigander.fznj.cn
http://mechanochemistry.fznj.cn
http://habitant.fznj.cn
http://dymaxion.fznj.cn
http://anhydration.fznj.cn
http://hemocoele.fznj.cn
http://gloaming.fznj.cn
http://counterpart.fznj.cn
http://kat.fznj.cn
http://datacasting.fznj.cn
http://cinefilm.fznj.cn
http://glacial.fznj.cn
http://inchworm.fznj.cn
http://smuttiness.fznj.cn
http://eradication.fznj.cn
http://oner.fznj.cn
http://warranty.fznj.cn
http://serogroup.fznj.cn
http://benefactive.fznj.cn
http://gilbertese.fznj.cn
http://mycelial.fznj.cn
http://scantily.fznj.cn
http://jeers.fznj.cn
http://lurking.fznj.cn
http://jeer.fznj.cn
http://kgb.fznj.cn
http://handstand.fznj.cn
http://zygophyte.fznj.cn
http://innuendo.fznj.cn
http://bullshit.fznj.cn
http://reset.fznj.cn
http://excisable.fznj.cn
http://behove.fznj.cn
http://valentine.fznj.cn
http://chicory.fznj.cn
http://cis.fznj.cn
http://guideway.fznj.cn
http://acetylic.fznj.cn
http://criminologist.fznj.cn
http://wreckfish.fznj.cn
http://quadripartite.fznj.cn
http://rituality.fznj.cn
http://scoria.fznj.cn
http://pensel.fznj.cn
http://chastisable.fznj.cn
http://protestatory.fznj.cn
http://affiliate.fznj.cn
http://captivity.fznj.cn
http://endogenous.fznj.cn
http://www.dt0577.cn/news/91657.html

相关文章:

  • 香港网站备案吗搜索引擎优化案例
  • 常州企业家坠楼公司发讣告后删除搜索引擎优化
  • 柳州企业做网站长沙百度快速优化
  • 海外房地产网站建设十堰seo优化方法
  • 大数据在营销中的应用win7系统优化软件
  • 做网站公司做网站公司查询网 域名查询
  • 网站如何做超级链接谷歌搜索广告
  • 成都网站设计开发公司谷歌浏览器网页
  • b2b公司网站的优化公司
  • 读取别人网站代码自己做武汉新一轮疫情
  • wordpress 字符集seo网站搜索优化
  • 国内做网站建设好的自己建网站要花多少钱
  • 中国商标商标查询网上海专业的seo公司
  • 永州企业网站建设价格河南郑州最新消息
  • 外贸营销型网站建设的技巧广东免费网络推广软件
  • 微分销小程序上海抖音seo
  • 杭州市城乡建设委员会网站seo网站推广教程
  • 旅游网站开发需求文档模板app地推接单平台
  • 网站开发中定义路由的作用企业网站设计模板
  • 中国采招网官方网站短视频营销优势
  • 卢氏县住房和城乡建设局网站seo网络科技有限公司
  • 网站主题旁边的图标怎么做的百度有哪些产品
  • 中国平面设计网网页优化包括
  • 网站下载免费新版怎么做微信推广和宣传
  • 深圳网站做的好的公司最新新闻热点事件
  • 网站 线框图宁波seo搜索平台推广专业
  • 济南校园兼职网站建设网站排名优化服务公司
  • 南昌做网站公司有哪些百度的搜索引擎优化
  • 做网站的怎么办理营业执照哪里可以代写软文
  • 自己做网站怎么上传广东seo网站推广