예외사항
프로그램 실행중에 발생하는 오류
예외(오류) 종류
- Synax Error : 문법오류
print("안녕하세요)
- Name Error : 참조 변수가 없을때 발생
print(x)
- Index Error : 인덱스 범위를 잘못지정 했을 때 발생
lst = [1,2,3]
lst[3]
- Key Error : dictionary 형에서 없는 key를 사용할 때 발생하는 오류
dict = {'이름':'홍길동'}
dict['이름']
dict['주소']
# 키 미리 확인
dict.get("아이디")
dict.get("비번") # 키가 없으면 None / 아무일도 안일어남
- Attribute Error : 모듈, 클래스에 잘못된 속성을 참조할때 오류
import datetime
datetime.datetime.now()
datetime.datetime.now().month # 현재달을 리턴
datetime.datetime.months() # 없는 함수(속성)를 호출하게 되면 오류
- Value Error : 참조하는 값이 없을때 발생하는 오류
blood = ['A','B','AB','O']
blood.remove('O') # 리스트 변수에 있는 3값을 제거
blood.remove('C')
blood.index('A')
blood.index('B')
blood.index('C') # 리스트 변수에 3이라는 값이 없기 때문에 오류 발생
- FileNotFound Error : 존재하지 않은 파일을 참조할때 발생하는 오류
file = open("C:/pypy/apple.txt","r")
# 파일이 있는지 미리 확인하기
import os
os.path.exists("C:/pypy/apple.txt")
- Type Error : 서로 다른 자료형을 사용할경우 발생하는 오류
x = '1','2'
y = [2,3]
x + y
- ZeroDivisionError : 0으로 나눴을때
def divide(x,y):
return x/y
divide(10,2)
divide(10,0)
예외사항 처리
try : 실행하는 코드 작성 (필수)
except : 오류가 발생했을때 수행하는 코드 (필수 / 여러 번 사용 가능)
else : 오류가 발생하지 않았을때 수행해야할 코드 작성 (선택 / 실행하고 나가기)
finally : 실행되는 오류가 발생하든 무조건 수행하는 코드 작성 (선택)
raise : 사용자가 명시한 오류
# 오류 발생시 except문 실행 try: z = divide(10,0) print(z) except : print("오류가 발생했습니다.") |
|
# 에러의 종류마다 다른 액션 취하기 try: z = divide(10,"둘") print(z) except TypeError: print("인수값을 숫자로 입력해주세요.") except ZeroDivisionError: print("0으로 나눌 수 없습니다.") |
|
# 사용자가 지정한 오류 만들기 def func(arg): try: if arg < 1 or arg > 10 : raise Exception("유효하지 않은 숫자입니다.:{}".format(arg)) else : print("입력한 수는 {}입니다.".format(arg)) except Exception as err : print("오류가 발생했습니다.{}".format(err))
func(2) func(100) |
|
# 특정 오류를 지정하지 않으면 무조건 마지막 except 실행 try: z = divide(10,0) except TypeError as e: print("인수값을 숫자로 입력해주세요{}".format(e)) except: print("오류발생했습니다.") else : print("결과 : {}".format(z)) finally : print("프로그램 종료") |
|
# 아무것도 안쓰인 except는 무조건 제일 밑에 둬야한다. try: z = divide(10,'둘') except: print("오류발생했습니다.") except TypeError as e: print("인수값을 숫자로 입력해주세요{}".format(e)) else : print("결과 : {}".format(z)) finally : print("프로그램 종료") |
|
# 어떤 오류가 나던지 내가 정의한 오류가 나게 하기(좋은거 아님) /꼭 'Exception'을 써야한다. try: z = divide(10,'둘') except Exception as err: print("오류발생했습니다.{}".format(err)) except TypeError as e: print("인수값을 숫자로 입력해주세요{}".format(e)) else : print("결과 : {}".format(z)) finally : print("프로그램 종료")
|
'컴퓨터 > 파이썬' 카테고리의 다른 글
파이썬(Python) - 크롤링 연습 ① 사람인 빅데이터 채용 조건 수집 (0) | 2020.04.01 |
---|---|
파이썬(Python) - 스크래핑 ③ JSON을 이용한 크롤링 (0) | 2020.03.31 |
파이썬(Python) - 스크래핑 ② 웹 스크래핑/크롤링 연습, wordcloud사용 (0) | 2020.03.25 |
파이썬(Python) - 스크래핑 ① 스크래핑 기초 (0) | 2020.03.25 |
파이썬(Python) - 정규표현식과 메타문자 (0) | 2020.03.24 |