개발

파이썬: 예외처리

Funital01 2026. 4. 12. 15:07
목록

1. 예외처리

2. try-except 구문

3. finally 블록

4. 사용자 친화적 오류 메시지

예외처리

코딩을 하다보면, 여러가지 오류가 발생을 하게 됩니다.

이러한 오류를 상황에 맞게 적절히 처리하지 않으면

프로그램이 중단되거나 예상치 못한 문제가 발생할 수 있겠죠?

 

이때 사용하는 것이 바로 예외처리(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