일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 트리의 지름 자바
- docker 삭제
- 가운데 글자 가져오기 자바
- 빅데이터분석기사
- 빅분기실기
- 프로그래머스 가운데 글자 가져오기 파이썬
- 최단 경로 알고리즘
- 청년 AI Big Data 아카데미 13기
- m1 docker install
- 가운데 글자 가져오기 파이썬
- 가운데 글자 가져오기 python
- 트리의 지름 java
- 나누어 떨어지는 숫자 배열 java
- 청년 Ai Big Data 아카데미
- 프로그래머스 가운데 글자 가져오기 자바
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- 최소 스패닝 트리
- 가운데 글자 가져오기 java
- docker 완전 삭제
- 코드업 1020 java
- 나누어 떨어지는 숫자 배열 python
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- codeup 1020 자바
- 핸즈온 머신러닝
- docker remove
- codeup 1020 java
- 최소 스패닝 트리 자바
- 코드업 1020 자바
- 프로그래머스 가운데 글자 가져오기 python
- m1 docker
- Today
- Total
NineTwo meet you
[파이썬기초] 예외처리 본문
프로그램의 제어 흐름을 조정하기 위해 사용하는 이벤트를 예외라고 한다.
즉, 실행중에 감지되는 에러를 예외라고 부른다.
예외를 무시하고 프로그램을 정상적으로 실행할 수 있게 하는 것을 예외 처리하고 한다.
내장 예외 클래스 계층 구조
아래 설명을 해놓은 예외는 파란색으로 표시한다.
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StopAsyncIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- AssertionError
+-- AttributeError
+-- BufferError
+-- EOFError
+-- ImportError
| +-- ModuleNotFoundError
+-- LookupError
| +-- IndexError
| +-- KeyError
+-- MemoryError
+-- NameError
| +-- UnboundLocalError
+-- OSError
| +-- BlockingIOError
| +-- ChildProcessError
| +-- ConnectionError
| | +-- BrokenPipeError
| | +-- ConnectionAbortedError
| | +-- ConnectionRefusedError
| | +-- ConnectionResetError
| +-- FileExistsError
| +-- FileNotFoundError
| +-- InterruptedError
| +-- IsADirectoryError
| +-- NotADirectoryError
| +-- PermissionError
| +-- ProcessLookupError
| +-- TimeoutError
+-- ReferenceError
+-- RuntimeError
| +-- NotImplementedError
| +-- RecursionError
+-- SyntaxError
| +-- IndentationError
| +-- TabError
+-- SystemError
+-- TypeError
+-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
+-- Warning
+-- DeprecationWarning
+-- PendingDeprecationWarning
+-- RuntimeWarning
+-- SyntaxWarning
+-- UserWarning
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
+-- ResourceWarning
FileNotFoundError
파일을 읽으려고 할때 읽으려는 파일이 존재하지 않을 때 발생하는 에러
>>>f = open('farm.txt','r')
FileNotFoundError : [Errno 2] No such file of directory: 'farm.txt'
ZeroDivisionError
0으로 나누려고 할 때 발생하는 에러
>>>12/0
ZeroDivisionError : Division by zero
IndexError
인덱스를 잘못 접근했을 때 발생하는 에러
>>>a = [1,2,3]
>>>a [5]
IndexError: list index out of range
SyntaxError
문법상 오류 시 발생하는 오류로 다양한 문법상의 오류가 존재.
>>>str = 'farm
SyntaxError: EOL while scanning string literal
tapError
들여 쓰기시 tap랑 space를 섞어서 쓴경우 발생하는 에러
>>> for i in range(5):
... print("space")
... print("tap")
TabError: inconsistent use of tabs and spaces in indentation
IndentationError
들여쓰기 에러
>>> a = 0
if a == 0:
print("correct space")
print("error space")
IndentationError: unexpected indent
NameError
존재하지 않은 변수를 불러들일 경우 발생하는 에러
>>> print(farm)
NameError: name 'farm' is not defined
RecursionError
자기 자신을 재호 출하는 재귀 함수를 선언한 뒤 재귀 함수의 종료조건이 설정되지 않을때 발생하는 오류
파이썬 3.5에 새로 추가된 오류
def recursion():
recursion()
RecursionError: maximum recursion depth exceeded
RuntimeError
파이썬 3.5 이전 버전을 사용한다면 위의 재귀함수를 사용했을 때 RuntimeError가 발생한다.
물론 RecursionError와 RuntimeError는 같은 오류가 아니다.
AttributeError
존재하지 않는 속성을 쓰는 경우 발생하는 에러
>>> l = [1,2,3,4,5]
>>> l.keys()
AttributeError: 'list' object has no attribute 'keys'
ValueError
옳지 않은 속성이 올 경우 발생하는 에러
>>> int('str')
ValueError: invalid literal for int() with base 10: 'str'
TypeError
올바르지 않은 타입을 지정한 경우 발생하는 에러
KeyError
존재하지 않는 키를 사용할 경우 발생하는 에러
ModuleNotFoundError
존재하지 않는 모듈을 import 하는 경우 발생하는 에러
ImportError
import 하려는 모듈의 이름을 잘못 작성하거나 해당 모듈이 존재하지 않을 때 발생하는 에러
예외처리 방법
try, except만 사용
try에서 에러가 발생하면 예외 종류에 상관없이 except문이 실행되는 방법
try:
수행할 문장 1
수행할 문장 2
...
except:
수행할 문장 A
수행할 문장 B
....
try, except 발생 오류
try에서 특정 에러가 발생했을 때 except문이 실행되는 방법
try:
수행할 문장 1
수행할 문장 2
...
except 발생 오류:
수행할 문장 A
수행할 문장 B
....
try, except 발생 오류 as 오류 메시지 변수
발생 오류와 오류메세지 변수까지 포함한 except문
try:
수행할 문장 1
수행할 문장 2
...
except 발생오류 as 오류 메시지 변수:
print(오류 메시지 변수) # 이런 식으로 오류 메시지 변수를 사용할 수 있음
수행할 문장 B
....
try, finally
예외 발생 여부에 상관없이 실행하고 싶은 문장이 있는 경우 finally사용
try:
수행할 문장 1
수행할 문장 2
...
finally:
수행할 문장 A
수행할 문장 B
....
여러 개 오류 처리
각각의 오류 메시지를 보고 싶은 경우
try:
수행할 문장 1
수행할 문장 2
...
except 발생 오류 1 as 오류 메시지 변수:
수행할 문장 A
수행할 문장 B
....
except 발생 오류 2 as 오류 메시지 변수:
수행할 문장 A
수행할 문장 B
....
한꺼번에 보고 싶은 경우
try:
수행할 문장 1
수행할 문장 2
...
except (발생 오류 1, 발생 오류 2) as 오류 메시지 변수:
수행할 문장 A
수행할 문장 B
....
예외 회피
어떤 예외가 발생하더라도 그냥 넘어가는 방식
try:
수행할 문장 1
수행할 문장 2
...
except:
pass
예외 일으키기
일부러 예외를 발생시키고 싶다.
raise 발생 오류
예외 만들기
class 예외 클래스 이름(Exception):
수행할 문장 1
...
if 조건:
raise 예외 클래스 이름
'프로그래밍언어 > 파이썬' 카테고리의 다른 글
[파이썬] 주피터 노트북 크롬으로 실행하기 (0) | 2021.02.01 |
---|---|
[파이썬기초] 아나콘다 설치 & 주피터 사용하기 (0) | 2020.09.26 |
[파이썬기초] 모듈 (0) | 2020.09.24 |
[파이썬기초] 클래스 (0) | 2020.09.24 |
[파이썬기초] 파일 입출력 (0) | 2020.09.23 |