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

C++异常处理

发布时间:2020-12-16 07:42:28 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 C++异常处理的几种方法 #includecstdioclass BadSrcFile{};class BadDestFile{};class BadCopy{};int myCp(const char* destFile,const char* srcFile

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

C++异常处理的几种方法
#include<cstdio>
class BadSrcFile{};
class BadDestFile{};
class BadCopy{};

int myCp(const char* destFile,const char* srcFile)
{
   FILE* inFile;
   if((inFile=fopen(srcFile,"rb"))==0)
   {
      return 1;
   }
   FILE* outFile;
   if((outFile=fopen(destFile,"wb"))==0)
   {
      return 2;
   }
   char buf[20];
   size_t inSize;
   size_t outSize;
   while((inSize=fread(buf,sizeof(char),20,inFile))!=0)
   {
      outSize=fwrite(buf,inSize,outFile);
      if(outSize!=inSize)
      {
         return 3;
      }  
   }
   fclose(inFile);
   fclose(outFile);
return 0;
}

int myCp2(const char* destFile,"rb"))==0)
   {
     // return 1;
     throw 1;
   }
   FILE* outFile;
   if((outFile=fopen(destFile,"wb"))==0)
   {
    //  return 2;
     throw 2;
   }
   char buf[20];
   size_t inSize;
   size_t outSize;
   while((inSize=fread(buf,outFile);
      if(outSize!=inSize)
      {
        // return 3;
        throw 3;
      }  
   }
   fclose(inFile);
   fclose(outFile);
return 0;
}

void myCp3(const char* destFile,"rb"))==0)
   {
     // return 1;
     throw "打开输入文件时出错!n";
   }
   FILE* outFile;
   if((outFile=fopen(destFile,"wb"))==0)
   {
    //  return 2;
     throw "打开输出文件时出错!n";
   }
   char buf[20];
   size_t inSize;
   size_t outSize;
   while((inSize=fread(buf,outFile);
      if(outSize!=inSize)
      {
        // return 3;
        throw "拷贝时出错!n";
      }  
   }
   fclose(inFile);
   fclose(outFile);
}

void myCp4(const char* destFile,"rb"))==0)
   {
     // return 1;
     //throw "打开输入文件时出错!n";
       throw BadSrcFile();
   }
   FILE* outFile;
   if((outFile=fopen(destFile,"wb"))==0)
   {
    //  return 2;
    // throw "打开输出文件时出错!n";
       throw BadDestFile();
   }
   char buf[20];
   size_t inSize;
   size_t outSize;
   while((inSize=fread(buf,outFile);
      if(outSize!=inSize)
      {
        // return 3;
       // throw "拷贝时出错!n";
        throw BadCopy();
      }  
   }
   fclose(inFile);
   fclose(outFile);
}
int main()
{
   int result= myCp("11.txt","1.txt");
   int result1;
   switch(result)
   {
    case 0:printf("正常拷贝1!n");break;
    case 1:printf("打开输入文件时出错1!n");break;
    case 2:printf("打开输出文件时出错1!n");break;
    case 3:printf("拷贝时出错1!n");break;
    default:printf("未知错误1!n");break;
   }
  try{
      result=myCp2("22.txt","1.txt");
      myCp3("33.txt","1.txt");
      myCp4("44.txt","1.txt");
   }
   catch(int e){
	switch(e)
        {
          case 1:printf("打开输入文件时出错2!n");break;
          case 2:printf("打开输出文件时出错2!n");break;
          case 3:printf("拷贝时出错2!n");break;
          default:printf("未知错误2!n");break;
        }
    }
    catch(const char* e)
    {
      printf("%sn",e);
    }
    catch(BadSrcFile e)
    {
      printf("打开输入文件时出错!n");
    }
    catch(BadDestFile e)
    {
      printf("打开输出文件时出错!n");
    }
    catch(BadCopy e)
    {
      printf("拷贝时出错!n");
    }
    catch(...)
    {
      printf("未知错误!n");
    }
   printf("OK!n");
return 0;
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

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

    推荐文章
      热点阅读