반응형
오류의 종류
- 입력값이 예상 범위 밖
- 파일이 열리거나 닫혀 있거나, 읽기/쓰기 권한이 정확하지 않을 경우
- 포인터가 널일 경우
- 최적화된 코드가 원래 코드와 일치하지 않을 경우
오류 검사해야 하는 장소
- 외부의 입력값이 들어 올때
- 매개 변수 값으로 받은 값 검사
- 함수에서 리턴값을 검사
견고성과 정확성을 구분하라.
- 게임을 하다가 화면이 잠시 흐려졌다고, 게임 프로그램을 죽이면 안되는데, 이런 것을 견고성이라고 한다.
하지만 암 검진 프로그램에서 조금 어긋난 값이 나왔을 경우, 이것을 계속 실행시키면 큰일 나므로, 이때는 프로그램을 죽여야한다.
이런 성질은 정확성이라고 하는데, 이 둘 사이의 예외처리를 잘 구분해야한다.
오류 처리 방법
- 중립값 리턴, 다음값으로 치환, 이전 값으로 치환,가장 가까운 값으로 치환, 종료시킨다.
Defensive Programing
원문
Defensive programming is sometimes referred to as secure programming by computer scientists who state this approach minimizes bugs[citation needed]. Software bugs can be potentially used by a cracker for a code injection, denial-of-service attack or other attack.
....
중간생략
....
중간생략
원문에 포함된 C언어로 작성된 코드를 예제로 보자
int low_quality_programming(char *input){ char str[1000+1]; // one more for the null character strcpy(str, input); // copy input ... }
위의 코드를 보자면 문자열이 1000이 넘으면 에러가 난다. 이런 에러를 대비 해서 코딩한게 아래의 예제 코드이다.
int high_quality_programming(char *input){ char str[1000+1]; // one more for the null character strncpy(str, input, 1000); // copy input, only copy a maximum length of 1000 characters str[1000] = '\0'; // add terminating null character ... }
위의 코드를 보자면 문자열이 1001이든 10000이든 에러를 나지 않는다
이렇게 모든 경우의 수를 생각하면 에러에 대비한 코딩이 방어적 프로그래밍이다.
반응형
'IT 일반' 카테고리의 다른 글
스크립을 이용한 변조방법 (0) | 2009.11.10 |
---|---|
제노바이러스 (0) | 2009.11.10 |
웹 표준 테스트를 위한 브라우저 종류 (1) | 2009.06.12 |
바이너리 와 아스키의 차이점 (0) | 2009.04.06 |
이클립스 php 플러그인 (0) | 2009.01.28 |
웹 편집기인 네이버 smart editor의 소스를 공개합니다 : ) (0) | 2009.01.05 |
DBMS :: Database Management System (0) | 2008.12.14 |
백 앤드 서버 :: Back-and Server (0) | 2008.12.14 |