C 오류 처리
C 언어는 오류 처리에 대한 직접 지원을 제공하지 않지만, 시스템 프로그래밍 언어로,이 형태의 값은 기본 데이터에 액세스 할 수 있습니다 반환합니다. 오류가 발생하면, UNIX 또는 C 함수 호출의 대부분이 오류 코드는 글로벌변수이며, 1 또는 NULL이 에러 코드는 또한 errno를설정한다 반환는 발생 함수 호출 에러 과정 나타냈다. 당신은 오류 코드 <error.h> 헤더 파일의 다양한 찾을 수 있습니다.
따라서, C 프로그래머는 적절한 조치 및 반환 값에 따라 결정을 내릴 것을 확인하여 값을 반환 할 수 있습니다. 개발자는 프로그램 초기화시의 errno는 좋은 프로그래밍 습관 인 0으로 설정해야합니다. 0의 값은 프로그램이 오류를 나타냅니다.
errno를, perror는 ()와와 strerror ()
C 언어perror는 ()과의errno와 관련된 텍스트 메시지를표시와 strerror ()함수를제공한다.
- perror는 () 함수는 패스를 콜론, 공백과 현재의 errno 값의 텍스트 표현 다음의 문자열을 표시합니다.
- 와 strerror () 함수는 errno를 텍스트 표현의 현재 값에 대한 포인터를 반환합니다.
의 거짓 경우, 존재하지 않는 파일을 열 수있는 시도를 시뮬레이션 할 수 있습니다. 당신은 출력에 오류 메시지를 여러 가지 방법을 사용할 수 있습니다, 우리가 사용을 보여주기 위해 함수를 사용합니다. 또 다른 것은 모든 오류에표준 에러 출력 파일 스트림을 사용한다주의한다.
#include <stdio.h> #include <errno.h> #include <string.h> extern int errno ; int main () { FILE * pf; int errnum; pf = fopen ("unexist.txt", "rb"); if (pf == NULL) { errnum = errno; fprintf(stderr, "错误号: %d\n", errno); perror("通过 perror 输出错误"); fprintf(stderr, "打开文件错误: %s\n", strerror( errnum )); } else { fclose (pf); } return 0; }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
错误号: 2 通过 perror 输出错误: No such file or directory 打开文件错误: No such file or directory
제로 오류에 의해 부
분할 동안, 제수가 확인되지 않은 경우, 런타임 오류가 발생합니다 제로이다.
이를 방지하려면 먼저 제수를 확인합니다 분할하기 전에 다음 코드는 0입니다 :
#include <stdio.h> #include <stdlib.h> main() { int dividend = 20; int divisor = 0; int quotient; if( divisor == 0){ fprintf(stderr, "除数为 0 退出运行...\n"); exit(-1); } quotient = dividend / divisor; fprintf(stderr, "quotient 变量的值为 : %d\n", quotient ); exit(0); }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
除数为 0 退出运行...
프로그램 종료 상태
정상적인 상황에서, 정상 동작 시간 후 프로그램의 성공적인 구현은 가치 EXIT_SUCCESS가 종료된다. 여기에, EXIT_SUCCESS 매크로, 0으로 정의된다.
프로그램에서 실수가있는 경우 프로그램을 종료 할 때, 상태 값 EXIT_FAILURE을 수행한다, 그것은 -1로 정의된다. 따라서, 위의 과정과 같이 쓸 수있다 :
#include <stdio.h> #include <stdlib.h> main() { int dividend = 20; int divisor = 5; int quotient; if( divisor == 0){ fprintf(stderr, "除数为 0 退出运行...\n"); exit(EXIT_FAILURE); } quotient = dividend / divisor; fprintf(stderr, "quotient 变量的值为: %d\n", quotient ); exit(EXIT_SUCCESS); }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
quotient 变量的值为 : 4