본문 바로가기
Python/Python Basic

Python 예외처리(try, except, else, finally, raise)

by emilia park 2023. 5. 20.
728x90

파이썬은 EAFP방식의 코딩스타일을 권장한다. 

EAFP = It's Easier to Ask Forgiveness than Permission = 허락을 구하는 것보다 용서를 구하는 것이 쉽다

즉, 앞장에서 소개했던 파이썬에서 흔히 발생하는 에러들을 일단은 무시한채 수행(try)시키고, 에러가 발생하면 그때 처리(except)하겠다는 뜻이라고 한다. 

 

 

[기본 구조]

try : 에러 발생 가능성이 있는 코드 실행 

except : 에러명1

except : 에러명2

else : (for, if, try문) 에서 에러가 발생하지 않을때 실행 

finally : 에러의 발생 여부와 관계없이 항상 실행되는 구문 

 

# Example1
test = ['emilia', 'python', 'coding']

try: 
  x = test.index('error')
except ValueError:
  print('에러떴대용~')
else:
  print('에러안떴대용~')

# 출력 : 에러떴대용~

test 안에 'error' 라는 값이 없어서 ValueError가 발생을 했고 그래서 except 구문 실행

#Example2

test = ['emilia', 'python', 'coding']

try: 
  x = test.index('emilia')
except ValueError:
  print('에러떴대용~')
else:
  print('에러안떴대용~')

# 출력 : 에러안떴대용~

test 안에 'emilia' 값이 있어서 ValueError가 발생하지 않아 else 구문 실행

 

 

[Exception]

어떤 에러가 발생할지 모를때에 공백 또는 Exception으로 나두면 모든 Error 를 캐치한다.

except Exception : 

 

a = 10
b = 0

try: 
  x = a/b
except Exception:
  print('에러떴대용~')
else:
  print('에러안떴대용~')

# 출력 : 에러떴대용~ 
# ZeroDivisionError 발생

 

[Finally]

finally 구문은 에러가 나던 안나던 무조건 출력되는 구문

a = 10
b = 0

try: 
  x = a/b
except Exception:
  print('에러떴대용~')
else:
  print('에러안떴대용~')
finally: 
  print('분발하자')

# 출력 : 에러떴대용~ \ 분발하자

 

 

[alias (as)]

as 를 사용해 에러 내용 출력한다.

try :
    x = 1
    y = ['emilia','python','coding']
    print(y.index('hello'))

except ValueError as l:  
    print('ValueError 발생')
    print('에러내용 :',l)     
except IndexError :
    print('IndexError 발생')

except Exception:           #마지막에 Exception 넣어주는게 좋다
    print('알 수 없는 에러임')

else :
    print('에러발생 안함')

처음부터 Exception 넣어버리면 어떤 에러가 발생하든 '알 수 없는 에러임' 으로 출력이 될 것이다. 

Exception은 가급적 맨 마지막에 넣을 것.

 

 

 

[raise]

raise는 에러를 직접 발생시킬 수 있게 해주는 구문이다.

try :
    a = 'emilia'
    if a == 'python' : 
        print('Pass')
    else : 
        raise ValueError  #ValueError를 직접 발생시킴

except ValueError :
    print('문제발생')
    
# 출력 : 문제발생

이렇게 raise를 써서 일부러 ValueError 을 일으키게 할 수 있다. 그럼 자동으로 except 문으로 가 그에 해당하는 출력을 하게 된다.

 

 

 

이상 error관련된 예외처리 내용을 정리해봤다! 

 

728x90

'Python > Python Basic' 카테고리의 다른 글

Python 주요Error 정리  (0) 2023.05.20
Step2_변수(Variable), 자료형(Data type)  (0) 2023.03.22
Step1_Python  (0) 2023.03.15