[英]How to throw an exception in the following C++ code
我的类SystemManager()
有一个名为myObject
的私有对象,其构造函数需要另一个类的实例。
如果new
失败,我如何抛出异常?
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/
new
如果失败已经抛出异常。 如果TCP_server
的构造函数失败,那么它也应抛出异常。 因此,您无需在SystemManager
ctor中执行任何操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.