본문 바로가기
국비 교육/파이썬

[파이썬] 예외(Exception)

by 육츠 2023. 12. 28.
Contents 접기

예외 발생 사항

a = [1,2,3,4,5]
# print(a[5]) # IndexError 발생

b = '1234a'
# c = int(b) # ValueError 발생

# f = open("notexists.txt","r") #FileNotFound 발생

# data = 10/0 # ZeroDivisionError 발생

mydic = {}
# print(mydic['key']) # KeyError 발생

 

예외 처리 방법(try-except)

try:
    data = 10/0
except:
    print("0으로 나눌 수 없습니다.")
print("end\n")
0으로 나눌 수 없습니다.
end

 

에러 출력 보여줌

# 다른 예외 X 오직 ZeroDivisionError만
try:
    data = 10/0
except ZeroDivisionError as e:
    print("0으로 나눌 수 없습니다.")
    print(e)
print("end")
0으로 나눌 수 없습니다.
division by zero
end

 

 

예외 처리(try ~ except ~ except)

try:
    a = [1,2,3]
    print(a[3]) # 먼저 발생된 걸 처리 
    print(10/0)
except ZeroDivisionError: # 모든 예외가 한곳에서
    print("0으로 나눌 수 없습니다")
except IndexError :
    print("인덱스의 범위를 벗어났습니다")
print("end")
인덱스의 범위를 벗어났습니다
end

 

예외 처리 (try ~ except ~ finally)

finally : 반드시 실행 된다.

try:
    a =[1,2,3]
    print(a[3])
    
except IndexError:
    print("인덱스의 범위를 벗어났습니다")

finally: # return 구문을 만나도 실행됨
    print("반드시 실행되는 코드")
    
print("end")
인덱스의 범위를 벗어났습니다
반드시 실행되는 코드
end

 

 

def inputNum():
    num = int(input("양수 입력:"))
    if num<0:
        print("양의 정수만 입력:")
    else:
        return num
num = inputNum()
print(num)
 
 
양수 입력: -3
양의 정수만 입력:
None

 

def inputNum():
    num = int(input("양수 입력"))
    if num < 0:
        raise ValueError("양의 정수만 입력")
        # raise : 에러를 인위적으로 발생해 쓰게 하는 것
    return numd
try:
    num = inputNum()
    print(num)
except ValueError as e:
    print(e)
양수 입력 -2

정수 입력 -2 이므로 에러 발생

양의 정수만 입력

'국비 교육 > 파이썬' 카테고리의 다른 글

[파이썬] Class (상속, 은닉)  (0) 2023.12.28
[파이썬] File I/O , File 과 Directory  (0) 2023.11.05
[파이썬] 함수 - 2  (0) 2023.11.05
[파이썬] 함수 -1  (0) 2023.11.05