加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在以下C代码中引发异常

发布时间:2020-12-16 09:59:00 所属栏目:百科 来源:网络整理
导读:我的类SystemManager()有一个名为myObject的私有对象,其构造函数需要另一个类的实例. 如果新的失败,我如何抛出异常? The.cpp: SystemManager::SystemManager(): myObject(new TCPServer()) { ...} .h: class SystemManager{ ... MyObject myObject;} 解决
我的类SystemManager()有一个名为myObject的私有对象,其构造函数需要另一个类的实例.

如果新的失败,我如何抛出异常?

The.cpp:

SystemManager::SystemManager(): myObject(new TCPServer()) {  
    ...
}

.h:

class SystemManager{
    ...
    MyObject myObject;
}

解决方法

在这种情况下,new已经抛出异常,但想象一下其他情况,你不使用new运算符,例如:

MyClass::MyClass( int var1,int var2 )
    : m_var1( var1 ),m_obj2( var1 ) // If this one throws an exception,// it can't be caught.
{
    try
    {
       // Constructor body.
    }
    catch( ... )
    { }
}

因此,要从初始化列表中捕获异常,您必须使用特殊类型的try-catch

MyClass::MyClass( int var1,int var2 )
    try : m_var1( var1 ),m_obj2( var1 )    // Now I can catch the exception.
{
    // Constructor body.
}
catch( ... )
{ }

资料来源:https://weseetips.wordpress.com/tag/exception-from-constructor-initializer-list/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读