목록

예외처리
코딩을 하다보면, 여러가지 오류가 발생을 하게 됩니다.
이러한 오류를 상황에 맞게 적절히 처리하지 않으면
프로그램이 중단되거나 예상치 못한 문제가 발생할 수 있겠죠?
이때 사용하는 것이 바로 예외처리(Exception Handling) 입니다.
프로그램 실행 중 발생할 수 있는 오류를 적절히 처리해서 시스템 안정성을 보장해줍니다.
try-except 구문
예외 처리 방식 중 대표적인 방식이 바로 try-except 구문입니다.
기본적인 구조는 다음과 같아요.
# 모든 예외 처리(가장 기본)
try:
오류발생가능_코드()
except:
오류_처리_코드()
try 블록에서는 우리가 실행하고자 하는 코드를 작성하고,
실행 중 오류가 발생하면 except 블록이 실행되어
프로그램이 중단되지 않고 오류를 처리해줄 수 있습니다.
단순히 except만 사용하면 모든 예외를 처리할 수 있지만,
구체적인 오류 상황을 알기 어렵기 때문에 보통은 예외 정보를 함께 사용하는 것이 좋습니다.
# 예외 정보 받기
su1=10
su2=0
try:
result=su1/su2
print(result)
except Exception as e:
print(e) # division by zero
print("0으로 나눌 수 없습니다") # 0으로 나눌 수 없습니다
Exception은 대부분의 예외를 포함하는 상위 예외 클래스입니다.
as e를 통해 오류 메시지를 받아 출력하거나 활용할 수도 있어요!
그렇다면 특정 오류에 대한 정보도 얻을 수 있는데요!
# 특정 예외 타입 지정
su=1
su2=0
try:
print(su/su2)
except ZeroDivisionError as e:
print(e, "오류") # division by zero 오류
Exception 대신에 특정 예외 클래스를 따로 지정한다면,
원하는 오류만 선택적으로 처리할 수 있어 더욱 안전한 코드를 작성할 수 있습니다.
finally 블록
예외 발생 여부와 상관없이 항상 실행되도록 하는 코드 블록을 지정해줄 수도 있는데요,
이때 사용하는 것이 finally 입니다.
try:
print('aaa')
10/0
print('ddd')
except Exception as e:
print(e, "예외처리")
finally:
print("프로그램 종료")
# ==== 실행 결과 ====
# aaa
# division by zero 예외처리
# 프로그램 종료
try-except 구문 뒤에 이어서 작성해주면 되고,
try 구문에서 에러 발생과 관계 없이 finally의 코드는 문제없이 실행되는 것을 확인할 수 있었습니다.
사용자 친화적 오류 메시지
사용자가 직접 예외 클래스를 만들어서
예외 처리할 때 사용을 할 수도 있어요!
from logging import exception
class UserError(Exception):
def __str__(self): # 자동 출력 목적
return "사용자 에러!!"
# 테스트용 함수
def fn_over(su:int)->None:
try:
if su>20:
print("정상")
else:
raise UserError # raise: 사용자 에러 발생
except UserError as e:
print(e,"20보다 큰 값 사용하세요!")
except Exception as e:
print(e, "입력 타입을 확인하세요!")
finally:
print("프로그램 종료")
fn_over(5)
# ==== 출력값 ====
# 사용자 에러!! 20보다 큰 값 사용하세요!
# 프로그램 종료
만들고 싶은 사용자 에러 클래스를 생성할 때는 Exception클래스를 상속해서 사용해야 해요.
그래야 파이썬의 예외 처리 구조 안에서 정상적으로 동작할 수 있습니다.
여기서 raise는 사전에 찾아보면 던져준다는 의미를 갖고 있는데요,
예외 처리에서도 같은 의미를 가지고 있어요.
즉, "raise 사용자에러" 로 지정을 해주면, 사용자 에러를 발생시키겠다 라는 의미를 가지고 있어요.
그래서 특정 상황에서 원하는 예외 처리를 해주고 싶다면 사용하면 좋을 것 같아요!
지금까지 다양한 코드를 작성해왔지만,
예외처리는 그만큼 중요하게 다뤄야 할 개념이라고 느꼈습니다.
자신이 어떤 오류가 발생하는지도 중요하지만,
그 오류를 어떻게 처리하느냐가 더 중요하다고 생각합니다.
안정적이고 신뢰할 수 있는 코드를 작성하기 위해,
예외처리는 꼭 숙지해두어야 할 핵심 개념인 것 같네요! 🧐
'개발' 카테고리의 다른 글
| 파이썬: NumPy에 대해 알아보기 (0) | 2026.04.15 |
|---|---|
| 파이썬: 스칼라, 벡터, 행렬 알아보기 (0) | 2026.04.13 |
| 파이썬: 파일 입출력 (0) | 2026.04.11 |
| 파이썬: 상속(Inheritance)이란? (0) | 2026.04.10 |
| 파이썬: 클래스와 객체 (1) | 2026.04.09 |