C++ 什么';当文件可以';不能用C+打开+;?

C++ 什么';当文件可以';不能用C+打开+;?,c++,file-io,C++,File Io,程序需要运行该文件,但如果由于无数原因,无法找到或无法读取该文件,等等-退出程序的最干净方法是什么?如果需要该文件,并且丢失的文件异常,我将抛出异常。这将在更高的层次上进行处理,在这个层次上可以决定如何处理这个问题。如果应用程序在没有相关文件的情况下绝对无法运行,我会用适当的错误消息优雅地终止它,向用户显示确切的问题 当然,在分配其他资源之前,我会努力尽早检查这个文件。通过这种方式,可以减少不必要的工作,并在异常终止时释放更少的未使用资源。失败,就像在其他情况下失败一样: 命令行程序将输出无法

程序需要运行该文件,但如果由于无数原因,无法找到或无法读取该文件,等等-退出程序的最干净方法是什么?

如果需要该文件,并且丢失的文件异常,我将抛出异常。这将在更高的层次上进行处理,在这个层次上可以决定如何处理这个问题。如果应用程序在没有相关文件的情况下绝对无法运行,我会用适当的错误消息优雅地终止它,向用户显示确切的问题


当然,在分配其他资源之前,我会努力尽早检查这个文件。通过这种方式,可以减少不必要的工作,并在异常终止时释放更少的未使用资源。

失败,就像在其他情况下失败一样:

  • 命令行程序将输出无法读取的文件(完整路径)以及无法在Stderr上读取该文件的确切原因,并以错误代码退出。函数
    strerror()
    peror()
    帮助您描述故障原因
  • Gui会发布类似于上面的错误消息,并在确认后退出

此类错误消息应始终包括:

  • 程序试图打开文件时使用的名称
  • Unix上的
    strerror(errno)
    的结果,或者更复杂的Windows等价物

我在考虑以下三个步骤:

首先:打印文件名和适当的错误消息

第二步:清理程序占用的资源。释放内存、关闭管道、关闭套接字、删除临时文件、释放互斥锁


< > >强>第三< /强>:使用<代码> Exter()/<代码>终止。

:请始终尝试将要写入的文件写入完整路径,而不是文件名。<代码> StruReReor(<代码> >和<>代码> PrRoR()/代码>均为标准C和C++,因此它们不限于UNIX。@ PTEKK:当连接工作时,在第二步中,除了临时文件,所有其他文件都由操作系统在程序退出时处理。谢谢,评论不错。在许多平台上,这是由操作系统完成的。但我想让他知道应该怎么做。