PYTHON

[파이썬] 예외처리

Jonny 2022. 5. 10. 15:54

예외란

  • 파이썬에서 예외는 문법적으로는 문제가 없는 코드를 실행하는 중에 발생하는 오류
  • 표준 라이브러리(클래스)에 정의 되어 있는 예외는 자동적으로 발생됨으로, except에 예외형식만 명시 해 주면 됨
  • 표준 라이브러리에 없는 예외는
    1. Exception 클래스를 정보와 함께 직접 발생 시키고, except에 예외형식을 명시 하거나
    2. 예외 라이브러리(클래스)를 Exception 클래스의 파생 클래스로 직접 만들어서 정보와 함께 발생 시키고, except에 예외형식을 명시

try ~ except로 예외 처리하기

try:
	# 문제가 없을 경우 실행할 코드
except 예외형식1(발생오류):
	# 문제가 생겼을 때 실행할 코드

#ex
my_list =[1,2,3]

try:
    print("첨자를 입력하세요")
    index = int(input())
    print(my_list[index]/0)
except ZeroDivisionError:   #index가 0~2로 입력되면 Zero~ 발생
    print("0으로 나눌 수 없습니다.")
except IndexError:          #index가 0~2 벗어나면 Index~ 발생
    print("잘못된 첨자입니다.")

#실행결과
첨자를 입력하세요
2
0으로 나눌 수 없습니다.

첨자를 입력하세요
10
잘못된 첨자입니다.

#ex 예외의 인스턴스를 활용하는 법 : as문 사용
my_list =[1,2,3]

try:
    print("첨자를 입력하세요")
    index = int(input())
    print(my_list[index]/0)
except ZeroDivisionError as err:   #as를 붙이고 뒤에 인스턴스명 작성
    print("0으로 나눌 수 없습니다.({0})".format(err)) #({0}).format(인스턴스명)
except IndexError as err:          
    print("잘못된 첨자입니다.({0})".format(err))

#실행결과
첨자를 입력하세요
10
잘못된 첨자입니다.(list index out of range) #이런식으로 세부정보 얻을 수 있음

#finally, else
my_list =[1,2,3]

try:
    print("첨자를 입력하세요")
    index = int(input())
    print("my_list[{0}] : {1}".format(index, my_list[index]))
except Exception as err: #상세보기 위한 ass
    print("예외가 발생했습니다 ({0})".format(err))
else: #except에 대한 예외요소 출력
    print("리스트의 요소 출력에 성공했습니다.")
finally: #무슨일이 있어도 마무리
    print("머선일이 있어도 마무리합니다.")

#실행결과
첨자를 입력하세요
2
my_list[2] : 3
리스트의 요소 출력에 성공했습니다. #except의 예외가 발생했기 때문에 출력(else)
머선일이 있어도 마무리합니다. #finally 때문에 무조건 출력

첨자를 입력하세요
10
예외가 발생했습니다 (list index out of range) #except의 예외가 발생 안함 (try의 예외)
머선일이 있어도 마무리합니다.

'PYTHON' 카테고리의 다른 글

[파이썬] 파이썬 입문 12장 연습문제  (0) 2022.05.11
[파이썬] 기초 연습문제  (0) 2022.05.10
[파이썬] 객체지향 프로그래밍  (0) 2022.05.10
[파이썬] 함수  (0) 2022.05.10
[파이썬] 파일 입출력(I/O)  (0) 2022.05.10