Old Branch

Python Basic - 파이썬 에러 및 예외 - 예외처리(2)

woolbro 2019. 7. 4. 11:30
반응형

대표적인 예외처리의 종류와 예제들 입니다.

[Python/Python Study] - Python Basic - 파이썬 에러 및 예외 - 예외처리(1)

 

Python Basic - 파이썬 에러 및 예외 - 예외처리(1)

이번 포스팅은 파이썬 에러 및 예외처리에 관한 내용입니다. 예외는 에러를 뜻하기도 합니다. 완벽한 프로그램이라는 것은 없기 때문에.... 하하 실수들 때문에 에러나 버그가 나기도 합니다. 특히, 결제나 수십명..

woolbro.tistory.com


 

파이썬 예외 처리의 기본

파이썬의 예외처리 기본은 아래와 같습니다.

try 구문에 원하는 코드를 작성하고, 에러가 발생 할 것 같은 에러명 1, 에러명 2에 해당하는 코드를 except에 작성 해주고, 에러가 나지 않을 경우 실행 해 줄 else문도 작성 해 줍니다.

마지막으로, 선택이지만 모든경우에 상관없이 실행 할 finally를 작성 해 줍니다.

 

예를 바로 보도록 하겠습니다.

 

#예제 1
name = ['wool','lee','dev']
try:
    z = 'wool'
    x = name.index(z)
    print(" {} : name리스트에서 찾았다! ".format(z,x+1))
except ValueError:
    print('Not Fount it! - Occured ValueError!!!')
else:
    print(' OK!!! else!!')
finally:
    print('work is done....')

 

위의 코드를 설명하면,

우선 name이라는 리스트 안에 'wool','lee','dev' 라는 문자열을 넣었습니다

try 구문에서 이제, 프로그램을 실행 하고 에러의 여부에 따라서 except, else 등을 작성하게 됩니다.

위의 프로그램에서는 try 구문에 에러가 나지 않았기 때문에 except 가 나지 않았습니다! 

때문에 else문이 작동이 될 것이고, finally는 어떤 경우든 실행되는 구문이기 때문에 작동이 됩니다 :)

 

z = 'wool' 부분을 변경하면서 실행 해 보세요 :)

 

지금 작성한 코드에서는 이미 어떤 에러가 날 줄 알고 있었기 때문에 ValueError 라고 먼저 적어 두었는데요,

이처럼 미리 예상 가능 한 부분이 있다면 바로 적어두어도 좋지만

 

우선, try except가 없이 먼저 작성 한 후에, 에러가 발생 할때에 해당 구문에 try를 적용 시켜주는 것도 하나의 방법입니다!

 

 

잠깐! 에러의 이름을 모른다면!

# 어떤 에러가 발생할지 모를 경우 except는 그냥 사용...
name = ['wool','lee','dev']
try:
    z = 'bro'
    x = name.index(z)
    print(" {} : name리스트에서 찾았다! ".format(z,x+1))
except :
    print('Not Fount it! - Occured Error!!!!')
else:
    print(' OK!!! else!!')
finally:
    print('work is done....')

에러의 이름을 모른다면 except문을 작성할 수 없지 않을까.... 라고 생각 할 수도 있겠지만 다행히도 그렇지 않습니다!

 

except문의 옆에 이름을 제거하고 위의 코드와 같이 except 만 쓰면 모든 예외를 잡아 줄 수 있습니다 :)

 

 

 

예외를 발생시키기

 

예외를 일부러 발생 시키는 경우도 종종 있습니다.

 

예제를 같이 보도록 하겠습니다

raise : 예외를 직접 발생 (강제적으로 예외를 발생시키기)

# raise 키워드로 예외 직접 발생

try:
    a = 'kim'
    if a == 'wool':
        print('ok 허가!')
    else:
        raise ValueError
except ValueError:
    print("wool이 아닙니다")
else:
    print('Ok')
finally:
    print('Program is done.....')

 

위의 코드에서, if - else문에 주목 해주세요

a가 wool 이라면 'ok 허가!' 를 출력하는 구문인데요, wool이 아니면 else문으로 빠지겠죠~?

이 경우에는 else문으로 빠져 처리를 해주는 것인데, wool이 아니면 프로그램을 실행 하지 못하게 하려고 합니다.

이 때에, else에 raise 문을 사용해서 오류를 발생시키고 예외처리를 해 줍니다.