在C++中从错误条件退出构造函数的最佳技术是什么?特别是,打开文件时出错.
谢谢你的回复.我正在抛出异常.这是代码(不知道它是否是最好的方法,但它很简单)
// Test to see if file is now open; die otherwise
if ( !file.is_open() ) {
cerr << "Failed to open file: " << m_filename << endl;
throw ("Failed to open file");
}
Run Code Online (Sandbox Code Playgroud)
有人认为我喜欢C++,你不必在方法声明上声明抛出的异常.
我是C#程序员,但现在我想进一步学习C++.
我知道C++的基础知识,但我不知道如何处理错误.
例如:我正在写一个库.我创建了一个构造函数,它请求一个整数作为参数.
如果该整数大于50,则表示错误.在C#中我会抛出ArgumentOutOfRange异常,但是我应该在C++中做什么?
可能重复:
如何在C++中处理构造函数中的失败?
C++中是否有任何模式,所以如果出现故障,我可以在构造函数中终止对象创建?那么调用构造函数的客户端获得了有关失败的obj创建的信息?
是否可以检查构造函数的参数是否存在某些约束,如果不满足则不创建对象并返回一个值来告诉它无法创建.
例如 .
Class Device
{
string id;
Device(string ID)
{
If (ID.Length != 7)
{
//Do not create Object
}
id == ID;
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我只想要7个字符长的id字符串,而不是更少!如果它不是7个字符我不想创建对象是否可以这样做?
除了外部功能检查之外,我想不出任何解决方案,这是我想要远离的东西!