1) 예외는 반드시 처리해야 함
2) 로그는 반드시 남긴다
3) 예외는 던져진다
4) 예외 무시 - 좋지 않음!
1) SyntaxError(문법 오류)
print('error)
2) NameError(참조 없음)
a = 10, b = 15
print(c)
3) ZeroDivisionError
print(100 / 0)
4) IndexError
x = [50, 70 ,90]
print(x[[4])
5) KeyError
dic = {'Name': 'Lee', 'Age' = 41}
print(dic['hobby'])
but) 여기서 get메소드를 통해
print(dic.get('hobby'))
를 하게되면none
출력 됨 = 더 안정적
6) AttributeError(모듈, 클래스에 있는 잘못된 속성 사용 예외)
import time
print(time.time2()) #time2라는 메소드 없을 때
7) ValueError
x = [10, 50, 90]
x.remove(200)
8) FileNotFoundError
f = open('test.txt') #test.txt 파일이 없을 때
9) TypeError
x = [1, 2]
y = (1, 2)
print(x + y)
list와 tuple은 더할 수 없음
try
: 에러가 발생 할 가능성이 있는 코드 실행except 에러명1, except 에러명2
: 여러개 가능else
: try
블록의 에러가 없을 경우 실행finally
: 항상 마지막에 실행1) 예1 - 특정 에러
name = ['Kim', 'Lee', 'Park']
try:
z = 'Kim'
x = name.index(z)
print('{} Found it! {} in name.'.format(z, x + 1)
except ValueError:
print('Not found it! - Occurred ValueError!')
else:
print('OK! else')
Kim Found it! 1 in name
OK! else
Not found it! - Occurred ValueError!
2) 예2 - 모든 에러
위와 같은 상황에서
except ValueError:
대신
except:
만 쓸 경우 전체 에러를 의미(하지만 어떤 에러인지 알 수 없음)
= 같은 의미로 except Exception:
3) 예3 - 모든 에러시 에러 종류 확인
예1의 문에서
except Exceprion as e:
print(e)
print('Not found it! - Occurred ValueError!')
print(e)
를 해주면 에러 종류 이름 뜸
✏️ 가장 좋은건 예제1번처럼 이름을 한정지어주고 as 이름
넣어주는게 좋음
4) 예4 - 예외 직접 발생
raise
: 예외 직접 발생시키기a = 'Park'
if(a == 'Kim':
print('Pass')
else:
raise ValueError
except ValueError:
print('Occurred! Exception!')
else:
print('OK! else!')
'Kim'이 아니면 ValueError 발생