티스토리 뷰
파이썬 프로그래밍을 하다보면 필연적으로 오류(또는 에러)와 만나게 됩니다. 예상할 수 있는 오류는 쉽게 if문을 통해서 제어를 할 수 있지만 갑자기 뜬금없이 나타나는 오류(Error)를 잡기에는 역부족입니다. 그래서 파이썬에서는 예외처리(Exception Handling)를 제공합니다. 확실한 오류는 물론이고, 예상 못한 오류까지 잡기에는 예외처리가 제격입니다. 예외(Exception)이라는 말이 조금 어렵게 느껴진다면 파이썬에서는 그냥 쉽게 오류, 에러라고 생각하시면 됩니다.
파이썬 예외처리 코드 기본구조
try:
(예외가 일어날 것 같은 코드, 즉 위험한 코드)
except:
(예외가 있을 때 실행될 코드)
else:
(예외가 없을 때 실행될 코드)
finally:
(예외와 상관없이 무조건 실행될 코드)
try:
print('##### 예외가 있을 때 #####')
number = 3 / 0 # 0으로 나누면 ZeroDivisionError 예외가 발생
print('다음 코드들...')
except:
print('except 블록')
else:
print('else 블록')
finally:
print('finally 블록')
print()
try:
print('##### 예외가 없을 때 #####')
number = 3 / 3
print('다음 코드들...')
except:
print('except 블록')
else:
print('else 블록')
finally:
print('finally 블록')
try 블록에 있는 코드를 실행하다 예외를 만나게 되면 except 블록으로 직행
예외가 있을 때를 except 블록을, 없을 때는 else 블록을 실행한다.
finally 블록은 예외가 있으나 없으나 실행된다.
(위의 코드를 보면 언제 어느 블록이 실행되는지 한눈에 파악할 수 있습니다.)
여러가지 예외(Exception) 처리하기
L = [1, 2, 3]
try:
#주석을 풀어가면서 하나씩 테스트
#print(abc) # NameError 발생
#print(L[7]) # IndexError 발생
#number = 3 / 0 # ZeroDivisionError 발생
int('abc') # ValueError 발생
except NameError:
print('NameError')
except IndexError:
print('IndexError')
except ZeroDivisionError:
print('ZeroDivisionError')
except:
print('모르는 에러!')
예외 종류별로 except문을 사용하여 세밀한 처리를 할 수 있다.
위에서부터 순서대로 예외를 처리하기 때문에 순서가 중요하다.
마지막에 모든 예외를 처리하기 위해서는 except: 또는 except Exception: 을 사용한다.
예외의 종류는 아래의 링크를 참고한다.
https://docs.python.org/3/library/exceptions.html#
예외 변수 사용하기 (except as)
try:
int('abc') # 예외 발생
except NameError as e:
print(e)
print(type(e))
except IndexError as e:
print(e)
print(type(e))
except Exception as e:
print(e)
print(type(e))
except Exception as e: 처럼
as 다음에 예외변수를 지정하면 예외관련 정보를 얻을 수 있다.
print(e) - 예외 메시지를 출력한다.
print(type(e)) - 예외의 종류(타입)를 출력한다.
직접 예외 발생시키기 (raise)
try:
raise Exception('인덱스 오류!')
except Exception as e:
print(e)
print(type(e))
직접 예외를 발생시키기 위해 raise 키워드를 사용한다.
직접 예외(Exception) 만들기
class TestError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return self.value
try:
raise TestError('직접만든 오류!')
except Exception as e:
print(e)
print(type(e))
Exception 클래스를 상속받아 직접 예외를 만들 수 있다.
str(e) 또는 print(e) 출력을 변경하기 위해서는 __str__ 함수를 재정의해야한다.
간단하게 예외 메시지를 전달하기 위해서는 그냥 Exception 사용하면 된다.
파이썬 print 함수 사용법 정리 (파이썬 화면 출력)
파이썬 input 함수 사용법 정리 (파이썬 키보드 입력)
파이썬 자료형 비교 정리 (파이썬 정수, 실수, 불, 문자열, 리스트, 튜플, 집합, 사전)
파이썬 주석, docstring 사용법 정리 (파이썬 help 함수, __doc__ 속성)
- Total
- Today
- Yesterday
- 라즈베리파이
- Android Programming
- 파이썬 프로그래밍
- Android Studio
- 라즈베리파이 활용
- 리눅스 명령어
- 이클립스 사용법
- 리눅스 설치
- 파이썬 자료형
- raspberry pi
- 리눅스 기초
- 라즈베리파이 나스
- 추억의 오락실
- 리눅스
- 파이썬 함수
- jsp 프로그래밍
- 리눅스 cat
- 파이썬
- mysql
- Eclipse ADT
- 파이썬 연산자
- 게임기 만들기
- openmediavault
- eclipse
- PYTHON
- linux
- 안드로이드 프로그래밍
- 라즈베리파이 NAS
- 라즈베리파이 오락실
- 파이썬 기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |