#include<stdio.h>
#include<stdlib.h>
#include
#define BUFSIZE 1024
using namespace std;
//1,throw普通类型,和函数返回传值是一样的
int copyfile2(const char* dest, const char* src)
{
FILE* fp1 = NULL, * fp2 = NULL;
fopen_s(&fp1, src, "rb");
if (fp1 == NULL)
{
const char* error = "你的源文件打开有问题";
printf("throw 前,error的地址:%p\n", error);
throw error;
}
fopen_s(&fp2, dest, "wb");
if (fp2 == NULL)
{
throw - 2;
}
char buffer[BUFSIZE];
int readlen, weitelen;
while ((readlen = fread(buffer, 1, BUFSIZE, fp1)) > 0)
{
weitelen = fwrite(buffer, 1, readlen, fp2);
if (readlen != weitelen)
{
throw - 3;
}
}
fclose(fp1);
fclose(fp2);
return 0;
}
int copyfile1(const char* dest, const char* src)
{
return copyfile2(dest, src);
}
void main()
{
int ret = 0;
try
{
ret = copyfile1("c:/test/dest,txt", "c:/test/src.txt");
}
catch (int error)
{
printf("出现异常啦!%d\n", error);
}
catch (char error)
{
printf("出现异常啦!%c\n", error);
}
catch (string error)
{
printf("出现异常啦!%c\n", error);
}
catch (const char* error)
{
printf("出现异常啦!%c\n", error);
}
catch (...)
{
printf("没有捉到具体的异常类型\n");
}
}