상세 컨텐츠

본문 제목

28. 파이썬 예외처리

프로그래밍 언어/Python(파이썬)

by 알파고제로 2023. 10. 19. 08:50

본문

■ 예외란?

  • 프로그램의 실행 도중에 만날 수 있는 오류들을 Exception이라고 한다.
  • 파이썬에서는 안정적인 프로그래밍 작성을 위해 try, except를 이용해서 오류처리를 할 수 있다.
# 방법 1
try:
    오류발생 코드
except:
    오류처리 코드

# 방법 2
try:
    오류발생 코드
except 발생 오류 :
    오류처리 코드

# 방법 3
try:
    오류발생 코드
except 발생 오류 as 오류 메시지 변수:
    오류처리 코드

# 방법 4
try:
    오류발생 코드
except 발생 오류 as 오류 메시지 변수:
    오류처리 코드
else :
    오류가 발생하지 않았을 때 코드

# 방법 5
try:
    오류발생 코드
except 발생 오류 as 오류 메시지 변수:
    오류처리 코드
finally :
    반드시 처리해야하는 코드

 

■ 예외의 종류

예외 설명
NameError 초기화하지 않은 변수를 사용할 때 발생
ValueError 타입은 맞지만 값의 형식이 잘못되었을 경우 발생
ZeroDivisonError 0으로 나누었을 때 발생
IndexError 첨자가 범위를 벗어났을 때 발생
TypeError 타입이 맞지 않은 경우 발생

 

 예외 강제 발생

  • 특정 조건에 맞지 않은 상황을 예외로 처리할 수 있다.
  • 이런 경우 raise 명령어를 사용하여 예외를 인위적으로 발생시킬 수 있다.
num = int(input('숫자 입력: ‘))
if num < 0:
     raise ValueError('양수만 입력하세요.’)
else:
     print('num = ', num)
# 예 1 : Exception 발생시키기    
a = [1, 2, 3, 4, 5]         
#a[5] # IndexError

b = "123@"
# c = int(b) # ValueError

try : 
    f = open("dontexist.txt") # FileNotFoundError 파일이 없으면 오류발생
except FileNotFoundError as e :
    print(e)
else : 
    data = f.read()
    print(data)
    f.close()
# 예 2
# data = 5
try : 
    data = 10 / 0  # ZeroDivisionError
except ZeroDivisionError as e:
    print(e)
    
print('결과:', data)

# 예 3 :"w" mode는 없으면 무조건 생성하므로 FileNotFoundError 없음
try : 
    f = open("dontexist.txt", "w") 
    f.write("안녕하세요???")    
finally :  # 반드시 처리해야하는 블록으로 cleanup 하는 코드가 사용
    f.close()
# 예 4 : 하나의 try가 여러 개의 Error를 가지는 경우
try :
    a = [1, 2, 3]
    print(a[3])
    print(10 / 0)
except ZeroDivisionError:
    print("0으로 나누지 마시오")
    
except IndexError: 
    print("List의 인덱스를 잘못 사용")    

# 예 5 : 하나의 try가 여러 개의 Error를 가지는 경우
try :
    print(10 / 0)
    a = [1, 2, 3]
    print(a[3])
except (ZeroDivisionError, IndexError)  as e :
    print(e)
# 예 6 : 오류의 회피 : pass
try :
    f = open("temporary.txt")
    data = f.read()
except FileNotFoundError as e :
    pass

print("끝!!")

'프로그래밍 언어 > Python(파이썬)' 카테고리의 다른 글

29. 파이썬 클래스 - part1  (0) 2023.10.19
27. File과 Directory  (0) 2023.10.18
26. 파이썬 I/O (입출력)  (0) 2023.10.18

관련글 더보기

댓글 영역