❰예외처리❱
-파이썬의 예외 처리에 대해 배워보자.
▶예외처리란?
파이썬의 예외처리 (Exception Handling)는 프로그램 실행 중 발생하는 오류, 즉 예외(Exception)를 감지하고 복구하여 프로그램이 비정상적으로 종료되는 것을 막는 기술입니다. 이를 통해 프로그램의 안정성과 신뢰성을 높일 수 있습니다.
예외(Exception): 프로그램 실행 중 발생하는 오류 상황(예: 0으로 나누기, 없는 파일 열기 등).
예외 처리: 프로그램이 중단되지 않도록 오류를 잡아내고, 적절히 대응하는 방법.
장점: 예측 불가능한 상황에서도 프로그램이 안정적으로 실행.
▶예외와 오류의 차이점
오류(Error)는 문법적 오류(Syntax Error)처럼 프로그램 실행 이전에 발생하는 문제로, 인터프리터가 코드를 해석하는 단계에서 발견합니다. 이 경우 프로그램은 아예 실행되지 않고 오류메시지를 보여주는 것으로 대체됩니다.
예외(Exception)의 경우 프로그램이 실행되는 도중에 발생하는 문제로, 문법적으로는 올바르지만 실행 시점에 예상치 못한 상황 (예: 0으로 나누기, 존재하지 않는 파일 열기 등) 때문에 발생합니다. 예외가 발생하면 일반적으로 프로그램은 즉시 멈추게 됩니다.
즉, 실행은 되는 데 실행 도중 오류가 발생하여 프로그램이 강제 종료되었을 때를 예외라 합니다.
▶예외 처리의 기법
우선 예외 처리의 필요성은 예외를 처리하지 않으면 프로그램이 강제 종료되기 때문에 사용자 경험(UX)과 프로그램의 안정성을 위해 필요합니다. 그런 예외를 처리하기 위한 기법의 기본 구조에 대해 배워 보겠습니다.
try, except, else, finally의 구조로 되어있습니다.
자주 사용되는 건 try, except입니다.
try:
실행할 코드
except 예외 타입 :
예외 발생 시 실행할 코드
else :
예외가 발생하지 않았을 때 실행할 코드
finally :
예외 발생 여부와 관계없이 항상 실행할 코드
구조 | 설명 |
try : | 예외가 발생할 가능성이 있는 코드를 이 블록에 넣습니다. |
except : | try 블록에서 예외가 발생했을 때 실행할 코드를 정의합니다. 특정 예외만 처리하거나, 모든 예외를 포괄적으로 처리할 수 있습니다. |
else : | try블록의 코드가 예외 없이 성공적으로 실행되었을 때만 실행 됩니다. |
finally : | 예외 발생 여부와 상관없이 무조건 실행되는 코드를 정의 합니다. 주로 파일이나 네트워크 연결을 닫는 등 자원 정리 작업에 사용됩니다. |
모든 예외 처리 방법
특정 예외만 잡는 방법 : except ZeroDivisionError :
여러 예외 동시 처리: except (ValueError, TypeError):
모든 예외 포괄 처리:except Exception as e:(주의: 디버깅 어려워질 수 있음)
여기서 as e 는 as별칭을 의미하고 예외 객체가 e라는 변수에 담기는것을 의미 합니다.
▶오류 회피하기, 오류 일부러 발생 시키기, 사용자 정의 예외 만들기
①오류 회피하기(오류 무시)
때로는 예외를 처리 할 필요가 없을 때, 단순히 pass로 예외를 무시할 수 있습니다.
예를 들면 로그 파일이 없어도 프로그램을 그대로 실행 하고 싶을 때
try:
f = open("없는파일.txt", "r")
except FileNotFoundError:
pass # 오류 발생 시 그냥 넘어감
하지만, 무분별하게 사용하게 되면 문제를 숨겨서 디버깅이 어려워 질 수 있다는 문제점이 있습니다.
② 오류 일부러 발생시키기 (raise)
개발자가 의도적으로 특정 조건에서 예외를 발생시킬 수 있습니다.
잘못된 값이 들어오면 강제로 막아야 하는 상황에 사용 합니다.
특정 조건이 충족되지 않았을 때 프로그램의 흐름을 강제로 중단시키고 예외를 발생시켜, 프로그램의 상태를 명확하게 제어할 수 있습니다
def withdraw(balance, amount):
if amount > balance:
raise ValueError("잔액 부족!") # 일부러 예외 발생
return balance - amount
try:
withdraw(1000, 2000)
except ValueError as e:
print("예외 발생:", e)
③ 사용자 정의 예외 만들기
파이썬 내장 예외 외에, 상황에 맞는 새로운 예외를 정의할 수 있습니다, 보통 Exception클래스를 상속해서 정의 합니다.
여기서 상속 받는 Exception클래스는 모든 사용자 정의 예외가 상속받아야 하는 가장 기본적인 부모 클래스예요. 파이썬의 다른 내장 예외들, 예를 들어 ValueError, TypeError, ZeroDivisionError 등도 모두 Exception 클래스 또는 그 하위 클래스를 상속받고 있습니다.
✔간단 정리
오류 회피하기 → pass 사용. (필요 없으면 무시)
오류 일부러 발생시키기 → raise 문.
사용자 정의 예외 → class MyError(Exception) 정의 후 raise로 발생.
Exception : 파이썬의 기본 내장 클래스
이것으로 파이썬의 예외 처리를 마치겠습니다
고생하셨습니다!😌
📘 참고:
《Do it! 점프 투 파이썬 (전면 개정 2판)》, 박응용 저, 이지스퍼블리싱, 2023
※ 본 글은 위 교재의 내용을 학습 및 정리 목적으로 요약/재구성한 글입니다.
'Python(파이썬)_점프 투 파이썬 > 파이썬 날개달기' 카테고리의 다른 글
파이썬의 표준 라이브러리 (0) | 2025.09.12 |
---|---|
파이썬의 내장 함수 (2) | 2025.09.07 |
파이썬 패키지 (0) | 2025.09.06 |
파이썬의 모듈 (0) | 2025.09.03 |
파이썬의 클래스(Class) (1) | 2025.08.31 |