C异常的概念是什么?针对这个问题,本文详细介绍了相应的分析和解决方法,希望能帮助更多想要解决这个问题的小伙伴找到更简单易行的方法。
当使用编程语言开发程序时,我们需要处理异常,以使我们的程序完美。在C语言中,也有关于异常处理的操作。在这里,我们将介绍几种常见的C异常的操作方法,希望能给大家带来一些帮助。
c后面跟关键字throw(某物)来限制这个函数的异常安全性。
Void f() throw()表示f不允许抛出任何异常,即f异常安全。
Void f() throw(.)意味着f可以抛出任何一种异常。
void f()throw(Exception TYPe);意味着f只能抛出异常类型为exceptionType的c异常。
介绍别人的一个笑话:
Throw()大概会说:“哦,不管你扔什么,都不准扔。"
投掷(.)他笑着和蔼地看着:“扔吧,扔吧,尽情地扔吧。"
扔(型)听到这里急了:“那不可能。你要扔,只能扔我的烟头。否则,如果你不小心扔掉了我祖传的金戒指,那将是一个巨大的损失。"
c异常传输有三种方法:
1.传值(by value)
在传递值的过程中,会产生临时对象的副本,无法解决多态问题,具体如下:myexception继承了exception,但无法正确调用,导致异常对象被切割。
classmyexcept : public except { public : virtual const char * what()throw();};const char * myexception : what(){ return ' myexception ';} CLaSS a { public : a(){ } void f()throw(){ throwmyexception();}};int main(){ Aa;尝试{ a . f();} catch(exception exc){ cout exc . what();}}运行结果:未知异常。
程序的执行是什么方法调用异常,而不是什么方法的myexception。
2.传指针(by pointer)
指针可以是多态的,但是临时对象的地址经常作为指针发送出去,导致挂指针的错误。如果在堆上分配内存空间,往往不知道什么时候删除对象,就会出现生存还是毁灭的错误。
结果显示:我的异常。
class myexcept : public except { public : virtual const char * what()const;};const char * myexcept : what()const { return ' myexcept ';} CLaSS a { public : a(){ } void f()throw(){ thrownew myexception();}};int main(){ Aa;尝试{ a . f();} catch(exception * pexc){ coutpexc-what();deletepexc} }3.传引用(by reference)
传递引用是* * *,可以克服前面两个问题。
程序结果显示:兆字节异常。
class myexcept : public except { public : virtual const char * what()const;};const char * myexcept : what()const { return ' myexcept ';} CLaSS a { public : a(){ } void f()throw(){ throwmyexception();}};int main(){ Aa;尝试{ a . f();} catch(exception exc){ cout exc . what();}}关于C异常概念的问题的答案就分享到这里了,希望。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/52396.html