본문으로 건너뛰기
실습하기

안전한 코드를 작성하기 위한 예외 처리 방법

프로그래밍을 하다 보면 예기치 않은 오류나 문제가 발생할 수 있습니다.

이런 상황에서 프로그램이 갑자기 종료되지 않고, 적절한 대처를 하려면 예외 처리가 필요합니다.

이번 수업에서는 예외의 개념과 파이썬에서 예외를 처리하는 방법을 알아보겠습니다.


프로그래밍에서 예외란 무엇인가요?

프로그래밍에서 예외(Exception)는 코드가 실행되는 동안 발생하는 예기치 않은 상황이나 오류를 뜻합니다.

예를 들어 존재하지 않는 파일을 열려고 하거나, 숫자가 아닌 값을 숫자로 변환하려 할 때 예외가 발생할 수 있습니다.

이러한 예외가 발생하면 프로그램은 즉시 종료되며, 그 이후의 코드가 실행되지 않습니다.

따라서 예외 처리를 통해 이러한 오류를 예방하거나 발생했을 때 적절히 대처하는 것이 중요합니다.


파이썬에서 예외 처리하기

파이썬에서는 try, except, finally 구문으로 예외를 처리합니다.


예외를 처리하는 기본 구조, try와 except

try 블록 안에 예외가 발생할 가능성이 있는 코드를 작성하고, except 블록에서 그 예외를 처리합니다.

예외가 발생하면 try 블록의 나머지 코드는 실행되지 않고 곧바로 except 블록으로 넘어갑니다.

try와 except 예시
try:
# 사용자로부터 숫자를 입력받아 정수 타입으로 변환
number = int(input("숫자를 입력하세요: "))

# 입력받은 숫자로 10을 나누어 result 변수에 저장
result = 10 / number

# 결과 출력
print(f"결과: {result}")

# 사용자가 숫자가 아닌 값을 입력했을 때 ValueError 예외 발생
except ValueError:
# 숫자가 아닌 값을 입력했을 때 출력되는 메시지
print("숫자를 입력해주세요")

# 사용자가 0을 입력했을 때 ZeroDivisionError 예외 발생
except ZeroDivisionError:
# 0을 입력했을 때 출력되는 메시지
print("0으로 나눌 수 없습니다")

위 코드에서는 사용자가 숫자가 아닌 값을 입력했을 때 ValueError가 발생하며, 0을 입력했을 때는 ZeroDivisionError가 발생합니다.

각각의 예외를 except 블록에서 처리해 프로그램이 중단되지 않도록 합니다.


무조건 실행되는 코드, finally

finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 코드 블록입니다.

이 블록은 파일을 닫거나, 리소스를 해제하는 등 프로그램이 끝날 때 반드시 수행되어야 하는 작업을 적는 곳입니다.

finally 예시
try:
# example.txt 파일을 읽기 모드로 열기
file = open("example.txt", "r")
content = file.read()
print(content)

# 파일이 없을 때 FileNotFoundError 예외 발생
except FileNotFoundError:
print("파일을 찾을 수 없습니다")

# 예외 발생 여부와 상관없이 파일을 닫음
finally:
file.close()
print("파일을 닫았습니다")

위 코드 예제에서 열람하려는 파일이 존재하지 않으면 FileNotFoundError가 발생하지만, finally 블록은 예외가 발생하더라도 파일을 닫는 작업을 수행합니다.

이처럼 finally는 코드의 마무리 작업을 위해 사용합니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!