본문 바로가기

Study

파이썬) 예외 처리

[서울ICT 데이터 중급(분석) 과정]

 

프로그램 실행도중 발생하는 예외들을 처리하면 발생오류들을 쉽게 파악하는데 도움이 됩니다.
try ~ except 문법을 사용하여 예외 처리를 합니다.
try:
    실행문1
except 발생오류:
    예외처리문

예외 상황 처리

예시1) 인덱스 에러

flist = ['img1.png','img2.png','img3.png']
flist[3]

예외 처리 후에는 예외 상황을 쉽게 알 수 있다.

flist = ['img1.png','img2.png','img3.png']

try:
    flist[3]
except:
    #예외 상황이 발생했다면, 아래 코드 실행
    print('인덱스 에러가 발생했습니다.')

에러를 구체적으로 명시해 예외 처리할 수도 있다.

flist = ['img1.png','img2.png','img3.png']

try:
    flist[3]
except IndexError as ie: # 에러를 구체적으로 명시
    print(ie)
    print('인덱스 에러가 발생했습니다.')

>> list index out of range 인덱스 에러가 발생했습니다.

오류 회피하기

위의 예시는 에러가 발생했을 때 어떤 에러가 발생했는지 알 수 있는 코드였습니다.

코딩을 하다보면 특정 오류가 발생할 경우 코드를 이어서 진행해야 할 때가 있습니다. 

이때, try ~ except ~else를 사용합니다.

 

try : 
	실행문1 
except 발생오류 : 
	예외처리문
else : 
	예외가 아닐 경우 실행할 것

 

예시2) 나이 확인

# 나이를 입력받아서 미성년자는 출입을 금하고 성인만 입장을 하게 한다. 
# 단, 나이는 정수로만 입력받을 수 있다.

try:
    age = int(input('당신의 나이는?'))
except:
    print('나이를 제대로 입력하시고 다음에 입장해주세요.')
else:
    if age < 20:
        print('미성년자는 출입이 안 됩니다.')
    else:
        print('환영합니다')

 

예시3) 에러 파일 제외 파일 출력하기

flist = ['./data/ANSI.txt','./data/utf8.txt']

for fname in flist:
    # print(fname)
    try:
        with open(fname,'r',encoding='utf-8') as f:
            print(f.read())
    except UnicodeDecodeError as ud:
        print(ud,fname)
        print('=' * 50)
        pass

'Study' 카테고리의 다른 글

파이썬) 파일과 폴더 다루기(2)  (0) 2024.03.12
파이썬) 파일과 폴더 다루기(1)  (0) 2024.02.24
데이터 전처리 - 스케일링  (0) 2024.02.24
데이터 전처리 - 결측치 처리(1)  (0) 2024.02.12
광학문자판독기 : OCR  (0) 2024.02.08