티스토리 뷰
목차
"테크씬 - 핵심 요약 후 시작합니다."
- 예외 처리는 코드 실행 중 발생할 수 있는 예외 상황에 대비해 안전한 코드 실행을 보장하는 방법임
- 일반적인 예외 유형으로 Null Reference, Array Index Out of Bounds, File Not Found 등 다양한 예외 유형을 파악하는 것이 중요함
- 예외 감지, 예외 처리, 예외 복구의 3단계의 절차를 미리 준비하는 것이 핵심적임
안녕하세요, 테크씬입니다. 우리 모두 일상 생활에서 예상치 못한 문제에 직면하는 경우가 있죠^^. 예를 들어, 레스토랑에서 원하는 메뉴가 품절이 됐다면, 다른 메뉴를 주문하거나 다른 레스토랑으로 가거나, 또는 그냥 집으로 돌아갈 수 있잖아요. 이처럼, 개발 혹은 프로그래밍에서도 '예외' (Exception)가 발생할 수 있습니다. 이런 예외는 '예외 처리' (Exception Handling)를 통해 대응할 수 있죠. 금번 포스팅에서는 예외 처리의 기본적인 절차와 방법에 대해 알아보겠습니다.
1. 예외 처리란?
프로그램에서 예외는 프로그램이 정상적으로 작동하는 데 방해가 되는 예상치 못한 상황을 의미합니다. 예외 처리는 이런 예외 상황에 대비하는 프로그래밍 기법입니다. 예외 처리를 통해 프로그램은 예외 상황에 대처하고, 프로그램이 중단되지 않고 계속 실행될 수 있습니다.
2. 예외 처리의 중요성
예외 처리는 다음과 같은 이유로 중요합니다:
a. 사용자 경험:
예외 처리를 통해 프로그램이 예외 상황에서도 안정적으로 동작할 수 있습니다. 이로 인해 사용자 경험이 향상됩니다.
b. 프로그램 안정성:
예외 처리를 통해 프로그램이 예외 상황에 대해 예측 가능하게 반응할 수 있습니다. 이는 프로그램의 안정성을 높입니다.
c. 디버깅:
예외 처리를 통해 개발자는 예외 상황에 대해 더 잘 이해할 수 있습니다. 이는 문제의 원인을 찾고 수정하는 데 도움이 됩니다.
3. 예외 처리 절차
이제 예외 처리의 가장 기본적인 절차를 살펴보겠습니다:
1) 예외 감지:
프로그램이 예외를 감지하면, 프로그램은 '예외가 발생했다'는 신호를 보냅니다. 이것은 고장난 자동차가 엔진 경고등을 켜는 것과 같습니다.
2) 예외 처리:
예외 처리 메커니즘은 이 신호를 받고, 어떤 예외가 발생했는지 확인한 다음, 적절한 처리 방법을 결정합니다. 이는 고장난 자동차가 문제를 자동으로 진단하고 해결 방법을 찾는 것과 비슷합니다.
3) 예외 복구:
예외 처리가 완료되면, 프로그램은 일반적인 작동 상태로 돌아갑니다. 이는 자동차가 문제를 해결하고 다시 원활하게 운행하는 것과 같습니다.
4. 자주 발생하는 예외 유형
예외는 다양한 유형이 있지만, 여기에서는 가장 흔히 발생하는 몇 가지 예외 유형을 살펴보겠습니다.
- Null Reference Exception: 객체 참조가 null일 때 발생. 예를 들어, 객체를 생성하지 않고 그 메소드를 호출하려 할 때 발생합니다.
- Array Index Out of Bounds Exception: 배열의 범위를 벗어나는 인덱스를 참조할 때 발생. 예를 들어, 배열의 크기보다 큰 인덱스를 사용하려 할 때 발생합니다.
- File Not Found Exception: 찾으려는 파일이 존재하지 않을 때 발생. 예를 들어, 파일 경로가 잘못되었거나 파일이 삭제되었을 때 발생합니다.
- Arithmetic Exception: 산술 연산이 잘못됐을 때 발생. 예를 들어, 0으로 나누려고 할 때 발생합니다.
- Class Not Found Exception: 해당 클래스를 찾을 수 없을 때 발생. 이는 클래스 경로가 잘못되었거나 클래스가 존재하지 않는 경우에 발생합니다.
- Illegal Argument Exception: 메소드에 잘못된 인자가 전달됐을 때 발생. 예를 들어, 인자로 음수가 필요하지 않지만 음수가 전달된 경우 발생합니다.
- Stack Overflow Exception: 스택 메모리가 너무 많이 사용되어 오버플로우가 발생했을 때 발생. 이는 보통 재귀적인 호출에서 잘못된 종료 조건 때문에 발생합니다.
- Out of Memory Exception: 시스템이 더 이상 메모리를 할당할 수 없을 때 발생. 이는 프로그램이 너무 많은 메모리를 사용하려고 할 때 발생합니다.
- Illegal State Exception: 객체가 적절하지 않은 상태일 때 발생. 예를 들어, 객체가 아직 초기화되지 않았는데 그 메소드를 호출하려 할 때 발생합니다.
- IO Exception: 입출력 작업 중 오류가 발생했을 때 발생. 이는 파일 읽기/쓰기와 같은 IO 작업에서 자주 발생합니다.
- Number Format Exception: 숫자를 파싱하는 동안 오류가 발생했을 때 발생. 예를 들어, 문자열을 숫자로 변환하려는데 문자열이 잘못된 형식인 경우에 발생합니다.
- Timeout Exception: 작업이 지정된 시간 내에 완료되지 않았을 때 발생. 예를 들어, 네트워크 요청이 타임아웃된 경우에 발생합니다.
- Data Access Exception: 데이터베이스 접근 중 오류가 발생했을 때 발생. 이는 SQL 쿼리 오류, 연결 오류
- Unsupported Operation Exception: 호출된 메소드가 지원되지 않을 때 발생. 이는 메소드가 아직 구현되지 않았거나, 특정 상황에서만 지원되는 경우에 발생합니다.
- Concurrent Modification Exception: 객체를 순회하는 동안 해당 객체가 변경됐을 때 발생. 예를 들어, 컬렉션을 순회하는 동안 그 컬렉션에 아이템이 추가되거나 제거된 경우에 발생합니다.
- Null Pointer Exception: 참조 변수가 null 값을 가지고 있을 때 그 변수를 사용하려고 할 때 발생합니다.
- Security Exception: 보안 정책에 위배되는 동작을 시도했을 때 발생. 예를 들어, 파일 시스템의 허용되지 않은 영역에 접근하려 할 때 발생합니다.
- Type Not Supported Exception: 지원되지 않는 타입을 사용하려고 할 때 발생. 예를 들어, 특정 함수나 메소드가 특정 타입의 인자만 받는데 다른 타입의 인자를 넘겼을 때 발생합니다.
- Invalid Cast Exception: 타입 변환에 실패했을 때 발생. 예를 들어, 하위 클래스 객체를 상위 클래스 타입으로 변환하는 것은 가능하지만, 반대로 상위 클래스 객체를 하위 클래스 타입으로 변환하려 할 때 발생합니다.
- Network Exception: 네트워크 관련 작업 중 오류가 발생했을 때 발생. 예를 들어, 서버에 연결을 시도하는 동안 네트워크 연결이 끊어진 경우에 발생합니다.
각각의 예외 유형에 대해 처리하는 방법은 다양하며, 그 방법을 선택하는 것은 상황에 따라 다릅니다.
5. 마치며
예외 처리는 소프트웨어 프로그래밍에서 중요한 요소입니다. 그럼에도 누구나 쉽게 이해하고 적용할 수 있도록, 예외 처리를 일상 생활의 비유를 통해 설명하려고 노력해 보았습니다^^. 이해하기 어려운 부분이 있다면, 돌아가서 다시 한번 읽어 보시는 것을 좋겠네요!
예외 처리를 이해하고 각자의 시스템에 적용하면, 프로그램은 예상치 못한 문제에 대해 유연하게 대응할 수 있습니다. 이를 통해 시스템 안정성이 높이고, 사용자 경험이 향상시켜 보시죠! 오늘도 테크씬이었습니다!
[관련 포스팅]
2023.05.06 - [개발] - GitLab과 Jenkins: 완벽한 팀워크 (feat. API 노드)
2023.02.26 - [개발] - CI/CD 가이드 : 지속가능한 개발의 꽃
'개발' 카테고리의 다른 글
스모크 테스트 : 배포 전 반드시 확인! (통합 테스트, 단위 테스트) (0) | 2023.06.23 |
---|---|
트래픽 피크? No Prob! 쿠버네티스 & EKS의 LoadBalancer와 AutoScaling (0) | 2023.05.28 |
웹 개발 길잡이: web 페이지 디자인부터 유지 보수까지 요약 (0) | 2023.05.08 |
GitLab과 Jenkins: 완벽한 팀워크 (feat. API 노드) (0) | 2023.05.06 |
CI/CD 가이드 : 지속가능한 개발의 꽃 (0) | 2023.02.26 |