重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我们都知道,无论是在C语言中还是C++的编程调试中,我们都会遇到各种各样的错误,那么在遇到这些错误的时候我们要怎么处理它们呢?
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的邢台网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!这里有一些传统的处理错误的方法:
①终止错误
②返回错误码
③返回合法值,让程序处于某种错误状态,
④调用一个预先设置好的处理错误的函数--->(回调函数)
为了更好地处理这一类问题,在C++中提出了异常,当函数出现一个自己无法处理的错误时,就会抛出异常,让函数的调用者直接或间接的来处理这个问题。
来举一个例子:
例1:
对于函数div来说,程序没有一种机制来处理当num2为零时的情况,所以我们可以通过抛出异常来解决这个问题
注意:当throw出异常的时候,后面括号里的参数一定要和catch后面括号里的数据类型匹配
例2:下面再来举一个例子
从上面的代码可以看出,由于一旦抛出异常,就要进行捕获,所以在抛出异常的同时也不可避免的影响了代码的执行流,也就是代码不一定就顺序执行了,因此在抛出异常之前,如果有malloc或new开辟的空间时,一定要在执行流改变之前将其释放,否则就会出现内存泄漏的问题。
通过以上两个例子,我想大家一定能够对异常有一定的了解了吧,下面我来对异常做几点总结:
①异常是通过抛出对象引发的,该对象的类型取决了激活哪一类的异常
②被选中的异常处理代码是调用链中抛出对象类型相同的最近一个开始的
③抛出异常会释放局部存储对象,被抛出的对象也还给了系统,异常对象在catch处理后也还给了系统
Tips:
异常捕获的匹配规则
1.允许非const到const的转换,也就是const可以接受匹配非const
2.允许派生类型到基类的转换(父类的指针或引用可以指向或引用一个子类,将其作为接受的类型)
3.将数组转换为一个指向数组类型的指针,将函数转换为函数指针类型
注意事项
一般不要在析构函数或构造函数中抛出异常
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。