산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C - 오류 처리

따라서 C 프로그래밍은 오류 처리에 대한 직접적인 지원을 제공하지 않지만 시스템 프로그래밍 언어이므로 반환 값의 형태로 낮은 수준에서 액세스를 제공합니다. 대부분의 C 또는 Unix 함수 호출은 오류의 경우 -1 또는 NULL을 반환하고 오류 코드 errno를 설정합니다. . 전역 변수로 설정되며 모든 함수 호출 중에 오류가 발생했음을 나타냅니다. 헤더 파일에 정의된 다양한 오류 코드를 찾을 수 있습니다.

따라서 C 프로그래머는 반환 값을 확인하고 반환 값에 따라 적절한 조치를 취할 수 있습니다. 프로그램을 초기화할 때 errno를 0으로 설정하는 것이 좋습니다. 값 0은 프로그램에 오류가 없음을 나타냅니다.

오류, 오류(). 및 strerror()

C 프로그래밍 언어는 perror()를 제공합니다. 및 strerror() errno와 관련된 문자 메시지를 표시하는 데 사용할 수 있는 기능 .

오류 조건을 시뮬레이션하고 존재하지 않는 파일을 열어 보겠습니다. 여기서는 사용법을 보여주기 위해 두 함수를 모두 사용하고 있지만 오류를 인쇄하는 데 하나 이상의 방법을 사용할 수 있습니다. 주목해야 할 두 번째 중요한 점은 stderr을 사용해야 한다는 것입니다. 모든 오류를 출력하는 파일 스트림.

#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, "Value of errno: %d\n", errno);
      perror("Error printed by perror");
      fprintf(stderr, "Error opening file: %s\n", strerror( errnum ));
   } else {
   
      fclose (pf);
   }
   
   return 0;
}

위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -

Value of errno: 2
Error printed by perror: No such file or directory
Error opening file: No such file or directory

0 오류로 나누기

어떤 수를 나눌 때 프로그래머가 제수가 0인지 확인하지 않고 결국 런타임 오류가 발생하는 것이 일반적인 문제입니다.

아래 코드는 나누기 전에 제수가 0인지 확인하여 이 문제를 수정합니다. -

라이브 데모
#include <stdio.h>
#include <stdlib.h>

main() {

   int dividend = 20;
   int divisor = 0;
   int quotient;
 
   if( divisor == 0){
      fprintf(stderr, "Division by zero! Exiting...\n");
      exit(-1);
   }
   
   quotient = dividend / divisor;
   fprintf(stderr, "Value of quotient : %d\n", quotient );

   exit(0);
}

위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -

Division by zero! Exiting...

프로그램 종료 상태

성공적인 작업 후 프로그램이 나올 경우 EXIT_SUCCESS 값으로 종료하는 것이 일반적입니다. 여기서 EXIT_SUCCESS는 매크로이며 0으로 정의됩니다.

프로그램에 오류 조건이 있고 나가려는 경우 -1로 정의된 상태 EXIT_FAILURE로 종료해야 합니다. 따라서 위의 프로그램을 다음과 같이 작성해 보겠습니다. -

라이브 데모
#include <stdio.h>
#include <stdlib.h>

main() {

   int dividend = 20;
   int divisor = 5;
   int quotient;
 
   if( divisor == 0) {
      fprintf(stderr, "Division by zero! Exiting...\n");
      exit(EXIT_FAILURE);
   }
	
   quotient = dividend / divisor;
   fprintf(stderr, "Value of quotient : %d\n", quotient );

   exit(EXIT_SUCCESS);
}

위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -

Value of quotient : 4

C 언어

  1. C 파일 처리
  2. 자바 예외 처리
  3. ADC 코드 오류율 이해
  4. 벨트 보관 및 취급
  5. C#에서 파일 처리:I/O 작업 [예제]
  6. C++ 신호 처리
  7. C# - 예외 처리
  8. Python - 예외 처리
  9. 물자 취급 안전 기본사항
  10. 재료 취급이란 무엇입니까?