- 傳統處理方法
- C++處理例外方法
- try
- catch
- throw
- 例外型別
- 數字
- 字串
- 類物件
#include <stdio.h>
#include <iostream>
using namespace std;
class BadSrcFile{};
class BadDestFile{};
class BadCopy{};
int my_cp(const char * src_file, const char * dest_file)
{
FILE * in_file, *out_file;
in_file = fopen(src_file, "rb");
if(in_file == NULL)
{
return 1;
}
out_file = fopen(dest_file, "wb");
if (out_file == NULL)
{
return 2;
}
char rec[256];
size_t bytes_in, bytes_out;
while(bytes_in = fread(rec, 1, 256, in_file))
{
bytes_out = fwrite(rec, 1, bytes_in, out_file);
if (bytes_in != bytes_out)
{
return 3;
}
}
fclose(in_file);
fclose(out_file);
return 0;
}
int my_cp2(const char * src_file, const char * dest_file)
{
FILE * in_file, *out_file;
in_file = fopen(src_file, "rb");
if(in_file == NULL)
{
throw 1; // throw就是拋出例外
}
out_file = fopen(dest_file, "wb");
if (out_file == NULL)
{
throw 2;
}
char rec[256];
size_t bytes_in, bytes_out;
while(bytes_in = fread(rec, 1, 256, in_file))
{
bytes_out = fwrite(rec, 1, bytes_in, out_file);
if (bytes_in != bytes_out)
{
throw 3;
}
}
fclose(in_file);
fclose(out_file);
// return 0;
}
int my_cp3(const char * src_file, const char * dest_file)
{
FILE * in_file, *out_file;
in_file = fopen(src_file, "rb");
if(in_file == NULL)
{
throw "打開源檔案時出錯!"; // throw就是拋出例外
}
out_file = fopen(dest_file, "wb");
if (out_file == NULL)
{
throw "打開目標檔案時出錯!";
}
char rec[256];
size_t bytes_in, bytes_out;
while(bytes_in = fread(rec, 1, 256, in_file))
{
bytes_out = fwrite(rec, 1, bytes_in, out_file);
if (bytes_in != bytes_out)
{
throw "拷貝檔案時出錯!";
}
}
fclose(in_file);
fclose(out_file);
// return 0;
}
int my_cp4(const char * src_file, const char * dest_file)
{
FILE * in_file, *out_file;
in_file = fopen(src_file, "rb");
if(in_file == NULL)
{
throw BadDestFile();
}
out_file = fopen(dest_file, "wb");
if (out_file == NULL)
{
throw BadDestFile();
}
char rec[256];
size_t bytes_in, bytes_out;
while(bytes_in = fread(rec, 1, 256, in_file))
{
bytes_out = fwrite(rec, 1, bytes_in, out_file);
if (bytes_in != bytes_out)
{
throw BadCopy();
}
}
fclose(in_file);
fclose(out_file);
// return 0;
}
int main()
{
// int result;
// if(result = my_cp("1.txt", "2.txt")!= 0)
// {
// switch(result)
// {
// case 1:
// printf("打開源檔案時出錯!\n");
// break;
// case 2:
// printf("打開目標檔案時出錯!\n");
// break;
// case 3:
// printf("拷貝檔案時出錯!\n");
// break;
// default:
// printf("發送未知錯誤!\n");
// break;
// }
// }
try
{
my_cp2("1.txt", "2.txt");
my_cp3("1.txt", "2.txt");
my_cp4("11.txt", "2.txt");
}
catch(int e)
{
printf("發生例外:%d\n", e);
}
catch(const char *e)
{
printf("%s\n", e);
}
catch(BadSrcFile e)
{
printf("發送例外:打開源檔案時出錯!\n");
}
catch(BadDestFile e)
{
printf("發送例外:打開目標檔案時出錯!\n");
}
catch(BadSrcFile e)
{
printf("發送例外:拷貝檔案出錯!\n");
}
catch(...)
{
printf("其他例外!\n");
}
printf("Ok!\n");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/249508.html
標籤:其他
上一篇:RecyclerView嵌套ScrollView,滑動卡頓解決方案,滑動沖突解決方案
下一篇:AsyncTask的使用
