본문 바로가기
컴퓨터 프로그래밍/Python

점프 투 파이썬(2022) 5-4 예외처리

by __ALE__X__ 2023. 1. 27.

예외처리 문법

try:

     ...

except [발생오류[as 오류 메시지 변수]]:

     ...

 

except 사용법

1. except만: 오류 종류 관련X, except 블록 수행

2. 발생오류+excpet: 정해진 오류이름과 일치해야 except 블록 수행

3. 발생오류+오류메시지+except: 오류이름, 오류메시지 일치해야 except 블록 수행

try로 4/0 실행 -> 0으로 나눴을 때 오류(ZeroDivisionError)발생 -> 오류 메시지를 e에 저장하고 출력

 

try로 리스트 a에 없는 5번째 숫자 출력 -> 오류(IndexError)발생 -> 오류 메시지를 e에 저장하고 출력

 

try, finally문: finally는 예외 없이 항상 수행

- 사용한 리소스를 close 해야할 때 사용

 

try로 파일 쓰기모드로 열기 -> "heyhey" 적기   -> 파일 닫기

 

 

 

 

 

 

여러개의 오류 처리

try:

    ...

except 발생오류1:

    ...

except 발생오류2:

    ...

 

try로 리스트 a에 존재하지 않는 4번째 요소 출력/4를 0으로 나눔 -> 인덱스오류(존재X 4번째요소) 먼저 발생, 제로 오류 발생 X

 

 

 

 

 

try로 리스트 a에 존재하지 않는 4번째 요소 출력/4를 0으로 나눔 -> 인덱스 오류 먼저 발생, 인덱스 오류 메시지 출력

 

try로 존재하지 않는 파일 읽기 모드로 열기 -> FileNotFoundError 발생, pass로 무시(회피하기)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

오류 일부러 발생: raise

ex) Bird클래스를 상속받는 자식 클래스는 fly 함수를 포함해야함

1번 예시: 메서드 오버라이딩으로 fly 함수 포함 -> "very fast" 출력

2번 예시: 메서드 오버라이딩으로 fly 함수 무시 -> NotImplementedError 발생

 

***NotImplementedError: 꼭 작성해야하는 부분이 구현되지 않았을때 발생

 

 

예외 만들기: 특수한 경우, 예외처리 위해 파이썬 내장함수 Exception 상속

 

1. 클래스 MyError가 파이썬 내장함수 exception 상속

2. 함수 say_nick(객체-nick) 만약 nick이 "stupid"라면 일부로 오류 발생 raise MyError, 아니면 nick 출력

3. 오류예외 처리 try로 say_nick('angel'), say_nick('studpid') 실행, 만약 MyError 발생하면 "not allowed to use"출력

 

오류메시지 출력하고 싶을때

1. 클래스 MyError가 파이썬 내장함수 exception상속

2. 메서드 __str__정의

3. 오류예외 처리 try로 angel과 stupid 실행, MyError 실행됨 -> not allowed to use 출력됨

 

오늘 점프투파이썬 라이브러리 예제편 구매했다.. 언넝 배우고 싶당...