서론
학습목표
- 파이썬에서의 예외처리 방법에 대해서 학습한다.
- 파이썬에는 어떤 종류의 에러 객체들이 알고 활용할 수 있다.
본론
오늘은 간단하게 Python에서의 예외처리와 자주 발생되는 에러의 종류에 대해서 정리해보도록 합니다.
대표적인 에러 종류 8가지
- IndentationError
- SyntaxError
- IndexError
- ValueError
- NameError
- TypeError
- AttributeError
- KeyError
IndentationError
이 에러는 정확하게 들여쓰지 않으면 발생됩니다. 파이썬에서는 들여쓰기로 스코프를 판단하는데, 아래와 같이 올바르게 들여쓰기를 처리하지 않으면 에러가 발생됩니다.
# 잘못된 들여쓰기의 예
def introduce_name(name):
print(name)
>>>> IndentationError: expected an indented block after function definition on line 1
Syntax Error
파이썬 문법이 잘못 됐을 경우, 발생됩니다. 대표적인 예시는 아래와 같습니다.
name = 'lee'
if name == 'name'
print(name)
>>> SyntaxError: expected ':'
Index Error
그 다음으로 쉽게 접할 수 있는 에러가 바로 Index Error
일 것입니다. 아래와 같이, 리스트의 인덱스를 넘을 경우 해당 에러가 발생됩니다. 따라서 리스트를 사용할 때에는 인덱스를 정확하게 지정해주는 것이 중요할 것 입니다.
first_name = ['lee', 'kim', 'park']
first_name[4]
>>> IndexError: list index out of range
ValueError
두 가지 경우로 인해 발생됩니다. 첫번째는 아래의 경우처럼 부적절한 값을 인자로 전달 받은 경우입니다.
int('hello')
>>> ValueError: invalid literal for int() with base 10: 'hello'
두번째는 참조하고자 하는 값이 없을 경우입니다.
arr = ['a', 'b', 'c', 'd', 'e']
arr.index('z')
>>> ValueError: 'z' is not in list
NameError
아래와 같이, 아직 선언하지 않은 변수를 호출할 경우 발생되는 에러입니다.
a = 1
b = 3
print(c)
>>> NameError: name 'c' is not defined
TypeError
아래와 같이, 잘못된 타입을 지정해서 연산할 경우 발생됩니다.
2 + "2"
>>> TypeError: unsupported operand type(s) for +: 'int' and 'str'
AttributeError
객체의 잘못된 속성을 참조할 때 발생됩니다.
from collections import deque
queue = deque()
queue.push(3)
>>> AttributeError: 'collections.deque' object has no attribute 'push'
KeyError
딕셔너리에 존재하지 않는 키 값을 참조할 때 발생됩니다.
person = {'name': 'lee', 'age': 22}
person['house']
>>> KeyError: 'house'
예외처리문
다른 프로그램잉 언어에 try ~ catch문이 있다면, 파이썬에는 try ~ except문이 있습니다. 해당 구문에서 에러가 발생되는 경우, except 블록의 코드가 실행되게 됩니다. raise 문은 throw와 같다고 보시면 됩니다.
try:
10 + score
except:
raise ValueError("Invalid score")
참고한 사이트
반응형
'Language > Python' 카테고리의 다른 글
[Python] Python에서 정렬하는 방법 (sort, sorted, heapq) (0) | 2023.10.11 |
---|---|
[Algorithm] 코딩테스트를 위한 Python 기본 문법 정리 (0) | 2022.02.23 |
[Python] 기본 문법 정리하기 (자바스크립트와의 차이점) (0) | 2022.02.13 |
댓글