cmod.ify
Exception Handling(예외 처리) 본문
728x90
반응형
1. 오류의 종류 (Error vs Exception)
프로그램에서 발생하는 문제는 크게 세 가지로 나뉨.
- 컴파일 오류: 오타나 문법 위반으로 아예 실행조차 안 되는 오류. (수정 필수)
- 논리적 오류: 실행은 잘 되는데, 계산을 틀려서 결과가 이상하게 나오는 오류. (디버깅 필요)
- 예외(Exception): 문법은 맞지만 실행 중에 외부 요인(잘못된 입력, 파일 없음 등)으로 중단되는 현상
2. 디버깅(Debugging)
예외나 논리적 오류의 원인을 찾아내고 수정하는 과정임.
- 방법: 직접 로그를 찍어보는 Logging, 개발 도구(IDE)의 Debugging Tool, 혹은 Testing Tool을 활용함.
3. 예외 처리(Exception Handling)
프로그램이 예외 때문에 갑자기 죽지 않도록 안전장치를 치는 것임.
기본 구조: try - except
def ten_div(x):
try:
return 10 / x # 에러가 발생할 것 같은 코드
except:
return 0 # 에러 발생 시 대신 실행할 코드
특정 예외만 골라 잡기
에러의 종류(클래스)에 따라 처리를 다르게 할 수 있음.
try:
# 실행 코드
except IndexError:
print("인덱스 범위 초과")
except ZeroDivisionError as e:
print(f"0으로 나눌 수 없음: {e}") # e를 통해 에러 메시지 확인 가능
주의사항: 예외 계층 구조 Exception은 모든 에러의 조상님격임.
따라서 Exception을 먼저 써버리면 아래에 쓴 구체적인 에러(IndexError 등)는 실행되지 않음.
구체적인 에러부터 먼저 써야 함
else와 finally
- else: 예외가 발생하지 않았을 때만 실행.
- finally: 예외 발생 여부와 상관없이 무조건 마지막에 실행. (주로 파일 닫기 등에 사용)
li = [100,200,300]
try:
print(li[4])
# 예외 발생 시 예외 내용을 e에 전달
except IndexError as e:
print(e)
except Exception:
print("나머지 예외 처리")
else:
print("예외 발생 안하면 처리")
finally:
print("무조건 처리")
강제로 예외 발생시키기
프로그램 설계상 특정 상황에서 에러를 내야 할 때 사용함.
- raise: 의도적으로 예외 인스턴스를 생성함. (raise Exception("메시지"))
- assert (단언): 특정 조건이 참이 아니면 AssertionError를 내며 즉시 중단함. 주로 디버깅 단계에서 검증용으로 씀.
x = 100
# Exception
if x > 50:
raise Exception("강제 예외 처리")
# AssertionError
assert x < 50, " 강제 중단"
728x90
반응형
'BASIC > PYTHON' 카테고리의 다른 글
| ORM(Object Relational Mapping) (0) | 2025.12.30 |
|---|---|
| File Handling (0) | 2025.12.23 |
| 유용한 함수 (0) | 2025.12.23 |
| 모듈과 패키지 (0) | 2025.12.23 |
| OOP(객체 지향 프로그래밍) (1) | 2025.12.22 |