Python에서 예외 처리하는 방법 (try ~ except)
Language/Python2024. 8. 22. 11:30Python에서 예외 처리(exception handling
)는 프로그램 실행 중 발생할 수 있는 오류에 대해 처리하여 프로그램의 비정상 종료를 방지할 수 있습니다. 본 글에서는 try
와 except
를 사용하여 예외 처리하는 방법에 대해 설명합니다.
예외 처리의 기본 개념
프로그래밍을 하다 보면 예상치 못한 오류가 발생할 수 있습니다.
예를 들어, 사용자가 입력한 값을 숫자로 변환하려고 할 때, 숫자가 아닌 값을 입력하면 오류가 발생합니다. 이런 상황에서 예외 처리를 통해 프로그램이 중단되지 않도록 할 수 있습니다.
Python에서는 try
와 except
블록을 사용하여 예외 처리할 수 있습니다. 아래 코드 예시를 살펴보면,
try:
number = int(input("숫자를 입력하세요: "))
print(f"입력한 숫자는 {number}입니다.")
except ValueError:
print("유효한 숫자가 아닙니다.")
이 코드에서 int(input("숫자를 입력하세요: "))
부분에서 숫자가 아닌 값을 입력하면 ValueError
에러가 발생합니다. 이 에러는 except ValueError
블록에서 처리되어, "유효한 숫자가 아닙니다."라는 메시지를 콘솔에 출력하게 됩니다.
예외 처리의 구조
파이썬에서 예외 처리의 구조는 아래와 같습니다.
try:
# 예외가 발생할 수 있는 코드
except 예외타입:
# 예외가 발생했을 때 실행되는 코드
else:
# 예외가 발생하지 않았을 때 실행되는 코드 (선택 사항)
finally:
# 예외 발생 여부와 상관없이 항상 실행되는 코드 (선택 사항)
try
: 예외가 발생할 가능성이 있는 코드를 작성except
: 발생한 예외를 처리. 특정 예외 타입을 지정할 수 있음else
: 예외가 발생하지 않았을 때 실행되는 코드를 작성finally
: 예외 발생 여부와 관계없이 항상 실행되는 코드를 작성
else와 finally 블록의 활용
보통은 try ~ except에 대해서는 잘 알고 있으나 else 혹은 finally에 대해서는 잘 모르는 경우가 많습니다. 위에서 설명한 것과 같이 else는 예외가 발생하지 않았을때 실행되고, finally는 예외 발생 상관없이 항상 실행됩니다.
이해를 돕기 위해 코드로 예시를 들어보면,
try:
file = open("example.txt", "r")
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
else:
content = file.read()
print(f"파일을 성공적으로 열었습니다.\n파일 내용:\n {content}")
file.close()
print("파일을 닫았습니다.")
finally:
print("후처리")
여러 개의 예외 처리하는 방법
하나의 try
블록에서 여러 종류의 예외를 처리해야 하는 경우, 여러 개의 except
블록을 사용할 수 있습니다.
try:
number = int(input("숫자를 입력하세요: "))
result = 10 / number
except ValueError:
print("유효한 숫자가 아닙니다.")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
이 코드에서, 사용자가 숫자가 아닌 값을 입력하면 ValueError
가 발생하고,
0을 입력하면, 특정 숫자를 0으로 나눌 수 없기 때문에 ZeroDivisionError
가 발생합니다.
예외 메시지 출력
예외가 발생했을 때, 발생한 예외에 대한 자세한 정보를 출력하고 싶을 때는 except
블록에서 예외 객체를 받아와 사용할 수 있습니다.
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"오류 발생: {e}")
이 코드는 ZeroDivisionError
예외가 발생했을 때, 해당 예외의 메시지를 출력합니다. 예외 객체 e
는 현재 발생한 예외에 대한 정보를 담고 있습니다.
사용자 정의 예외
Python에서는 사용자 정의 예외를 만들어 사용할 수도 있습니다. 예를 들어, 게임에서 특정한 조건에 따라 오류를 발생시키고 싶다면 다음과 같이 사용자 정의 예외를 정의할 수 있습니다.
class GameOverError(Exception):
pass
def check_game_over(score):
if score < 0:
raise GameOverError("점수가 0 이하입니다. 게임 오버!")
try:
check_game_over(-1)
except GameOverError as e:
print(e)
이 코드에서 GameOverError
라는 사용자 정의 예외를 만들고, check_game_over
함수에서 점수가 0 이하일 때 이 예외를 발생(raise)시킵니다. except
블록에서 이 예외를 처리하거나 로그성 메시지를 출력할 수 있습니다.
다른 글
'Language > Python' 카테고리의 다른 글
PyInstaller로 파이썬 코드를 exe 파일로 빌드하기 (0) | 2024.08.23 |
---|---|
파이썬의 모듈(module)과 패키지(package) (0) | 2024.08.23 |
Python에서 예외 발생시키는 방법 (raise Exception) (0) | 2024.08.22 |
Python에서 파일 입출력(File IO) 읽고 쓰는 방법 (0) | 2024.08.21 |
파이썬 특징과 배워야하는 이유 (2) | 2023.10.19 |
IT 기술에 대한 글을 주로 작성하고, 일상 내용, 맛집/숙박/제품 리뷰 등 여러가지 주제를작성하는 블로그입니다. 티스토리 커스텀 스킨도 개발하고 있으니 관심있으신분은 Berry Skin을 검색바랍니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!