예외 처리 기본 문법

2071 단어
이상 발생 첫 번째 현장, 이상 투매
void function() {//...throw 표현식;//...} 이상을 주목해야 하는 곳에서 이상을 포착합니다
try{//프로그램 function();//프로그램
}catch(이상 유형 설명) {//... 이상 처리 코드...}catch(이상 유형 참조) {//... 이상 처리 코드...}catch(...) {//기타 이상 유형//}
주의사항:\throw 조작을 통해 이상 대상을 만들고 던지기
 이상을 포착해야 하는 곳에서try 블록에 이상을 던질 수 있는 프로그램 세그먼트를 삽입합니다
 정상적인 프로그램 순서에 따라try 문장에 도달한 다음try 블록 {} 내의 보호 구역을 실행합니다
 보호 섹션이 실행되는 동안 이상이 없으면try 블록 뒤의catch 자구를 따라가지 않고 프로그램은try 블록 뒤에 따라가는 마지막catch 자구 뒤의 자구를 계속 실행합니다
 catch 자문은try 블록 뒤에 나타나는 순서대로 검사되며, 일치하는 catch 자문은catch 자문에 있는 코드에 따라 이상을 포획하고 처리합니다. (또는 이상을 계속 던지거나)
 일치하는 것을 찾지 못하면 abort 종료 프로그램을 호출하는 것이 부족합니다.
알림: 처리할 수 없는 이상은catch의 마지막 지점에서throw 문법을 사용하여 호출자throw에게 계속할 수 있습니다.
main
//p15-3.2 이상 처리 기본 문법.cpp: 이 파일은 "main"함수를 포함합니다.프로그램 실행은 여기서 시작하고 끝납니다.//
#include #include #include #include
using namespace std;
#define BUFSIZE 1024
int copyfile2(const char* dest,const char* src) { FILE* fp1 = NULL, * fp2 = NULL;
throw 0.01f;
fopen_s(&fp1, src, "rb");

if (fp1 == NULL)
{
	throw new string("     ");
}

fopen_s(&fp2, dest, "wb");
if (fp2 == NULL)
{
	throw - 2;
}

char buffer[BUFSIZ];
int readlen, writelen;

while ((readlen=fread(buffer,1,BUFSIZ,fp1))>0)
{
	writelen = fwrite(buffer, 1, readlen, fp2);
	if (readlen != writelen)
	{
		throw - 3;
	}
}

fclose(fp1);
fclose(fp2);
return 0;

}
int copyfile1(const char* dest, const char* src) { try { copyfile2(dest, src); } catch (float e) { printf(“copyfile1-catch…”); throw e; } return 0; }
int main() { int ret = 0;
try 
{
	printf("    copyfile...
"); ret = copyfile1("a.txt", "b.txt"); printf(" copyfile1
"); } catch (int error) { printf(" !%d
", error); } catch (string* error) { printf(" :%s
", error->c_str()); delete error; } catch (float error) { printf(" !%f
", error); } catch (...) { printf("catch ...
"); }

}

좋은 웹페이지 즐겨찾기