Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果fstream.open()在子函数中失败,如何退出程序_C++_File Io_Fstream_Quit - Fatal编程技术网

C++ 如果fstream.open()在子函数中失败,如何退出程序

C++ 如果fstream.open()在子函数中失败,如何退出程序,c++,file-io,fstream,quit,C++,File Io,Fstream,Quit,我尝试在类中的函数中打开文件: void openFile(){ inputFile.open(inputFilename.c_str()); if (inputFile.is_open()){ inputFile.read(buffer, skipAtBegin); } else { cerr << "Cannot open file: " << inputFilename << endl; e

我尝试在类中的函数中打开文件:

void openFile(){

    inputFile.open(inputFilename.c_str());

    if (inputFile.is_open()){
      inputFile.read(buffer, skipAtBegin);
    } else {
      cerr << "Cannot open file: " << inputFilename << endl;
      exitNow();
    }
}
void openFile(){
open(inputFilename.c_str());
if(inputFile.is_open()){
读取(缓冲区,skipAtBegin);
}否则{

cerr通常有三种选择:

  • 使用退出。退出程序
  • 使用异常。在别处抛出异常、句柄
  • 设置全局状态变量。设置全局状态,并让其他 函数检查状态并进行处理

  • 希望有人能想出其他的选择。

    是的。正是为了这个目的。实际上,是的。出口(int)命令。但我建议使用异常,因为它们给了您处理此类错误的机会。我不建议退出
    openFile
    函数。您应该返回某种类型的值,并在调用
    openFile
    的地方处理该值。或者以相同的方式使用异常。返回到
    main
    很乏味,但可以允许正确处置您可能正在使用的任何关键资源。
    退出
    在大多数情况下就足够了。在程序堆栈顶部附近抛出捕获的异常。显示适当的消息并从main返回。首先感谢您的帮助35;包含并退出(1);工作正常,稍后我将添加例外。