안녕하세요. 오늘은 파이썬에서 예외 처리에 대해 깊이 알아보도록 하겠습니다. 예외 처리란 프로그램이 실행되는 도중 발생할 수 있는 오류를 관리하고, 이러한 오류로 인해 프로그램이 비정상적으로 종료되는 것을 방지하는 기법입니다. 파이썬에서는 try
와 except
키워드를 사용하여 예외를 처리합니다.

예외란 무엇인가?
예외는 프로그램 실행 중에 발생하는 이상적인 조건이나 오류를 의미합니다. 예를 들어, 사용자가 0으로 나누기를 시도하거나 올바르지 않은 인덱스로 리스트에 접근하려고 할 때 예외가 발생할 수 있습니다. 이러한 예외가 발생하면 기본적으로 프로그램은 종료되며, 사용자는 오류 메시지를 받게 됩니다.
파이썬의 기본 예외 처리
파이썬에서 예외 처리를 위해 가장 기본적으로 사용하는 구조는 try
와 except
입니다. try
블록 안에 오류가 발생할 것으로 예상되는 코드를 작성하고, except
블록에서는 오류가 발생했을 때 실행될 코드를 기록합니다.
기본 사용법
예를 들어, 다음과 같은 코드가 있을 경우:
try:
x = 10 / 0
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
이 코드에서 10 / 0
연산이 실행되면 ZeroDivisionError
가 발생하고, 프로그램은 종료되지 않고 대신에 예외 처리 코드가 실행됩니다.
여러 예외 처리하기
하나의 try
블록에서 여러 종류의 예외를 처리하고자 할 경우, 각 except
블록에 특정 예외를 명시하여 개별적으로 처리할 수 있습니다. 아래와 같은 구조를 활용해 보세요:
try:
index = int(input("인덱스를 입력하세요: "))
print(arr[index])
except IndexError:
print("유효하지 않은 인덱스입니다.")
except ValueError:
print("정수만 입력해야 합니다.")
else와 finally 블록 추가하기
예외 처리를 더욱 세밀하게 처리하고자 한다면 else
와 finally
블록을 사용할 수 있습니다. else
는 try
블록 내에서 예외가 발생하지 않았을 때 실행되는 블록입니다. 반면 finally
블록은 예외 발생 여부와 상관없이 항상 실행됩니다. 이 둘은 자원 관리나 후처리에 유용하게 사용됩니다.
예시 코드
try:
file = open('somefile.txt', 'r')
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
else:
content = file.read()
print(content)
finally:
file.close() # 파일을 반드시 닫습니다.
사용자 정의 예외 처리
파이썬에서는 기본 예외 외에도 직접 예외 클래스를 정의하여 사용할 수 있습니다. 이를 통해 특정 상황에 맞게 예외를 더욱 세분화하여 처리할 수 있습니다. 예를 들어, 다음과 같이 사용자 정의 예외를 만들 수 있습니다:
class MyCustomError(Exception):
pass
try:
raise MyCustomError("사용자 정의 예외가 발생했습니다.")
except MyCustomError as e:
print(e)
예외 처리의 중요성
프로그램을 작성할 때 예외 처리는 매우 중요합니다. 예상치 못한 오류로 인해 프로그램이 중단되지 않도록 하기 위해서는 적절한 예외 처리 로직이 필요합니다. 예외 처리는 프로그램의 안정성을 높이고, 사용자에게 친절한 방법으로 오류를 안내할 수 있습니다.
예외 처리 실습 사례
파이썬에서 자주 사용하는 예외 처리의 예를 들어보겠습니다:
- 입력 처리를 통한 예외 처리: 사용자가 문자열 대신 숫자를 입력할 경우를 대비하여,
ValueError
를 처리하여 안내 메시지를 출력할 수 있습니다. - 파일 입출력: 파일이 없을 때 발생하는
FileNotFoundError
를 처리하여, 사용자에게 파일이 존재하지 않음을 알리는 로직을 구현할 수 있습니다. - 네트워크 요청: API 호출 시 발생할 수 있는 다양한 예외를 처리하여, 사용자에게 적절한 대처 방법을 제공할 수 있습니다.

결론
파이썬에서의 예외 처리는 프로그램의 안정성과 사용자 경험을 개선하는 데 필수적입니다. try
와 except
외에도 else
, finally
블록을 활용하여 더욱 세밀한 예외 처리 로직을 구현할 수 있습니다. 이 글을 통해 파이썬의 예외 처리에 대한 이해도를 높이고, 실무에 적용할 수 있는 방법에 대해 알아보았습니다. 이제 여러분도 파이썬에서 예외 처리를 자유롭게 사용할 수 있게 되기를 바랍니다.
질문 FAQ
파이썬에서 예외 처리는 무엇인가요?
예외 처리는 프로그램 실행 중 발생하는 오류를 관리하는 방법으로, 파이썬에서는 try
와 except
를 사용하여 예외를 제어합니다.
예외 발생 시 프로그램이 어떻게 되나요?
예외가 발생하면 프로그램은 기본적으로 종료되지만, 예외 처리를 통해 오류를 포착하고 프로그램의 흐름을 지속할 수 있습니다.
여러 예외를 동시에 처리할 수 있나요?
네, 하나의 try
블록에서 여러 except
블록을 사용하여 각기 다른 예외를 개별적으로 처리할 수 있습니다.
사용자 정의 예외란 무엇인가요?
사용자 정의 예외는 프로그래머가 필요에 따라 직접 정의한 예외 클래스로, 특정한 상황에서 발생할 수 있는 오류를 세부적으로 처리할 수 있게 해줍니다.