참고 자료
https://docs.python.org/ko/3/tutorial/errors.html
파이썬 버전 3.7 기준
파이썬에서의 에러(Error)와 예외(Exception)
에러(error), 예외(exception) 등.
파이썬에서 에러는 크게 문법 에러(SyntaxError) 또는 파싱에러로 불리는 에러와 예외(Exception)으로 구분된다.
문법에러(SyntaxError)
○ 파싱에러라고도 알려져 있다.
○ 파서는 문제가 되는 줄을 보여주고 문제가 있는 위치를 화살표(^)로 표시하여 준다.
▷ 화살표의 위치는 항상 옳은 것은 아니므로 코드 작성자가 에러가 발생한 줄을 잘 살펴보아야 한다.
○ 아래 예제는 문법 에러의 예를 보여준다.
▷ while 구문과 if 구문에 콜론(:)이 빠져있어 문법에러가 발생하였다.
▷ 에러 알림의 첫 번째 줄에선ㅍ각각의 에러가 발생한 줄인 line 1,2을 알려준다.
▷ 둘째 줄에는 에러가 발생한 줄을 보여준다.
▷ 셋째 줄에는 줄 안에 에러가 발생한 위치를 파서(^)를 통해 알려준다.
▷ 넷째 줄에는 발생한 에러의 이름을 구체적으로 알려준다.
문법에러의 예)
In[20]: while 1<2
...: pass
...:
File "<ipython-input-20-475862fdbc2d>", line 1
while 1<2
^
SyntaxError: invalid syntax
In[21]: while True:
...: if 1<2
...: pass
...:
File "<ipython-input-21-95333ab7f8b3>", line 2
if 1<2
^
SyntaxError: invalid syntax
예외(Exception)
▷ 첫 번째 예외는 NameError로 존재하지 않는 변수를 사용 할 경우에 발생한다.
▷ 두 번째 예외는 ZeroDivisionError로 0으로 나누기를 시도 할 경우에 발생한다.
▷ 세 번째 예외는 TypeError로 함수나 연산 중 인식하지 못하는 자료형을 사용할 경우에 발생한다.
예외 발생의 예)
# 첫번째 예외의 예
In[22]: print(qw)
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2862, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-22-13b993459970>", line 1, in <module>
print(qw)
NameError: name 'qw' is not defined
# 두번째 예외의 예
In[23]: 1/0
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2862, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-23-05c9758a9c21>", line 1, in <module>
1/0
ZeroDivisionError: division by zero
# 세번째 예외의 예
In[24]: abs('2')
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2862, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-24-1f07a960fcc0>", line 1, in <module>
abs('2')
TypeError: bad operand type for abs(): 'str'
'Python > 파이썬 기초' 카테고리의 다른 글
얕은복사(Shallow copy)와 깊은복사(Deep copy), copy모듈 - 파이썬 기초(28) (0) | 2019.03.10 |
---|---|
예외처리(try구문)와 예외발생(raise구문) - 파이썬 기초(27) (0) | 2019.01.10 |
클래스(class)의 상속(inheritance)과 비공개변수 - 파이썬 기초(25) (0) | 2019.01.08 |
클래스(class)와 어트리뷰트(attribute), 인스턴스(instance), 메서드(method) - 파이썬 기초(24) (0) | 2019.01.03 |
파일 읽기(read), 쓰기(write), with구문- 파이썬 기초(23) (0) | 2019.01.01 |
댓글