상세 컨텐츠

본문 제목

11. 예외처리

Python

by evaseo 2021. 4. 29. 15:49

본문

1.    입력, 파일처리, db 등 외부와 연결해야 할 때 사용

2.    형식: try:
        
수행할 문장
     except~
     finally:
        
수행할 문장

 

3.    try안에서 에러가 발생하면 except로 넘어갔다가 finally가고 try안에서 에러가 발생 안 하면 바로 finally간다.

 

4.    except

(1)     except: 오류 종류에 상관없이 발생하면 except블록을 수행

(2)     except Exception as 오류 메시지 변수: 오류 종류에 상관없이 발생하면 오류 메시지를 출력하면서 except블록을 수행

1)       Exception: 에러의 최상위 클래스

2)       sub클래스들을 처리하고 나머지를 Exception로 처리하고 싶을 땐 무조건 sub예외처리들의 젤 마지막에 선언해야 한다.

(3)     except 발생오류(Exceptionsub클래스): 미리 정해 놓은 발생오류 명과 같을 때만 수행

(4)     except 발생오류(Exceptionsub클래스) as 오류 메시지 변수: 발생오류 명과 같을 때 오류 메세지를 출력하면서 수행

(5)     여러 개의 오류처리 가능

(6)     except블록에 pass키워드를 쓰면 오류 회피

(7)     raise 오류명

1)       일부러 오류 발생시키기

2)       보통 상속받는 클래스에서 부모의 메소드를 오버라이딩 하지않았을 때 예외 발생하도록 할 때 사용
ex) class Bird:
       def fly(self):
           raise NotImplementedError
   class Eagle(Bird):
       pass
   eagle = Eagle()
   eagle = fly() => raise NotImplementedError

(8)     Exception을 상속받는 클래스를 만들면 직접 예외를 만들 수도 있다.

 

5.    finally:

(1)     예외발생 여부에 상관없이 항상 수행할 문장을 블록에 입력

(2)     보통은 리소스를 close해야할 때 많이 사용.

예외처리 예제)

#예외처리: try~except - 예상치 않은 에러에 대응하기 위한 문법

def divide(a, b):
    return a / b

c = divide(5, 2)
# c = divide(5, 0) # ZeroDivisionError: division by zero
print(c)
print('--------------------------')
#try안에서 에러가 발생하면 except로 넘어갔다가 finally가고
#try안에서 에러가 발생안하면 바로 finally간다
try:
    c = divide(5, 2)
    print(c)
    
    aa = [1, 2]
    print(aa[0])
    #print(aa[2]) #IndexError: list index out of range
    
    #file을 읽을 때는 open()
    f = open('c:/abc.txt')
    
except ZeroDivisionError: # 특정 예외에 대한 에러문장 지정 가능, 에러마다 따로 처리 가능
    print('0으로 나누면 안됩니다.')
    
except IndexError as e: # 특정 예외에 대한 에러문장 지정 가능, 에러마다 따로 처리 가능
    print('인덱스 에러: ', e)

except Exception as err: 
# 모든 에러 ∵ 에러의 최상위 클래스 Exception, 따라서 sub클래스들을 처리하고 
#나머지를 Exception로 처리하고싶을 땐 무조건 sub예외처리들의 젤 마지막에 선언해야한다.
    print('에러발생: ', err)
    
finally:
    print('에러 유무에 관계없이 반드시 수행되는 영역')

print('프로그램 끝')​
실행결과

 

'Python' 카테고리의 다른 글

13. 원격(remote) db연동 – MariaDB  (0) 2021.04.29
12. GUI(윈도우 프로그래밍)  (0) 2021.04.29
10. 내장함수  (0) 2021.04.29
8. 사용자 입력과 출력  (0) 2021.04.29
9. 파일 읽고 쓰기 File I/O  (0) 2021.04.25

관련글 더보기