728x90
[Python] 파이썬의 오류(Error)와 예외처리(Exception Handling)
프로그래밍 언어는 컴퓨터가 알아들을 수 있는 기계어인 0과 1로 바꿔주는 역할을 합니다.
'인터프리터'라고 하는 명령어 해석기를 통해 파이썬 프로그램 언어를 한 줄 한 줄 기계어로 번역하여 컴퓨터에게 전달해줍니다. 한 줄 한 줄 동작하기 때문에 에러가 발생하는 프로그램 이전까지는 잘 동작하다가 프로그램의 오류(Error)를 만나면 오류내용을 출력하고 종료합니다. 이 때 프로그램에서 오류가 발생할 만한 코드에 예외처리를 하는 방법에 대해 말씀드리려고 합니다. 예외처리(Exception Handling)는 이러한 오류를 다루고 제어하는 프로그래밍 기술입니다. 오류가 발생해도 프로그램이 멈추지 않고 계속 실행할 수 있도록 도와줍니다.
오류의 종류
파이썬에서는 크게 두 가지 종류의 오류가 있습니다.
- 구문 오류(Syntax Error) : 코드의 문법이 잘못되었을 때 발생하며, 코드가 실행되기 전에 발견됩니다.
- 예외(Exception) : 코드의 문법은 올바르지만 실행 중에 발생하는 문제로, 런타임 시에 처리해야 합니다.
오류 유형
- NameError
NameError는 정의되지 않은 변수를 사용하려고 할 때 발생합니다.
1
|
print(x) # NameError: name 'x' is not defined
|
- SyntaxError
SyntaxError는 잘못된 문법을 가진 코드를 실행하려고 할 때 발생합니다.
1
|
if x > 5 # SyntaxError: invalid syntax
|
- IndexError
IndexError는 리스트나 문자열 등의 시퀀스에서 인덱스 범위를 초과하거나 음수 인덱스를 사용할 때 발생합니다.
1
2
|
my_list = [1, 2, 3]
print(my_list[5]) # IndexError: list index out of range
|
- ZeroDivisionError
ZeroDivisionError는 0으로 나누려고 할 때 발생합니다.
1
|
result = 10 / 0 # ZeroDivisionError: division by zero
|
- FileNotFoundError
FileNotFoundError는 파일을 찾을 수 없을 때 발생합니다.
1
2
|
with open('nonexistent.txt', 'r') as file:
content = file.read() # FileNotFoundError: [Errno 2] No such file or directory: 'nonexistent.txt'
|
- 다른 오류 유형
파이썬에는 이 외에도 다양한 오류 유형이 있으며, 각각의 오류에 대한 이해는 예외처리에 도움이 됩니다.
예외처리
예외처리는 try, except 블록을 사용하여 구현됩니다. 예외가 발생할 가능성이 있는 코드를 try 블록 내에 작성하고, 예외가 발생했을 때 처리할 코드를 except 블록에 작성합니다.
- 기본적인 예외 처리
1
2
3
4
5
6
7
|
try:
# 예외가 발생할 수 있는 코드
result = 10 / 0
except ZeroDivisionError:
# 예외 처리 코드
result = "무한대"
print(result) # 출력: 무한대
|
- 다중 예외 처리
여러 종류의 예외를 처리할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
|
try:
# 예외가 발생할 수 있는 코드
result = int("문자열")
except ValueError:
# ValueError 예외 처리 코드
result = 0
except TypeError:
# TypeError 예외 처리 코드
result = -1
print(result) # 출력: 0
|
- 예외 정보 얻기
에러의 원인을 알고 싶다면 다음과 같이 Exception as e를 이용하여 'e'를 출력해보면 에러의 원인이 출력됩니다.
1
2
3
4
5
|
try:
result = 10 / 0
except ZeroDivisionError as e:
error_message = str(e)
print(f"예외 발생: {error_message}") # 출력: 예외 발생: division by zero
|
- finally 블록
finally 블록은 예외 발생 여부와 관계없이 항상 실행됩니다. 주로 파일이나 리소스를 정리하는 용도로 사용됩니다.
1
2
3
4
5
6
7
|
try:
file = open("example.txt", "r")
# 파일 읽기 작업 수행
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
finally:
file.close() # 항상 파일을 닫음
|
#파이썬 #프로그래밍 #코딩 #오류 #예외처리 #try exception finally
728x90
'Data & Programming > Python' 카테고리의 다른 글
[Python] 파이썬으로 텍스트 처리와 단어 수 세기 (210) | 2023.09.24 |
---|---|
[Python] 파이썬으로 날짜와 시간 다루기 (194) | 2023.09.23 |
[Python] 파이썬 함수와 클래스: 모듈화와 객체지향 프로그래밍의 핵심 (203) | 2023.09.18 |
[Python] 파이썬 조건문과 반복문: 제어 구조와 반복적인 작업 (120) | 2023.09.17 |
[Python] 파이썬의 자료구조 : 튜플, 리스트, 딕셔너리 (199) | 2023.09.16 |