나의 공부 일기

Python) Exception - 예외처리 본문

파이썬/파이썬 정리

Python) Exception - 예외처리

곽병권 2023. 10. 25. 12:55
728x90

파이썬에서는 오류가나는 경우가 있습니다.

이렇게 프로그램 동작 중 문제가 발생되는 것을 Exception(예외)라고 합니다.

 

파이썬 인터프리터가 처리 중 에러가 발생하면 메시지를 출력하고 종료되고,

에러를 무시하고 진행하거나 다른 방법으로 처리되도록 설정이 가능합니다.

 

예외 처리 기법으로 try ... except가 있는데

이런 형식으로 되어있습니다.

 

try란 예외가 발생할 수 있는 코드가 있는 영역입니다.(지역변수 선언에 주의해야합니다!)

except란 발생된 예외를 처리하는 코드를 작성하는 영역입니다.

오류가 발생하면 ~~를 실행하라고 작성할 수 있겠습니다.

 

예제로

어떤 숫자든간에 0으로 나눈다면 오류가 발생하게됩니다.

 

이때 0으로 나누게 될 경우 발생하는 오류를 예외처리를 해주게 된다면.

try:
    result = 123 / 0
except ZeroDivisionError:  # 나누는 값으로 0 이 들어가면 발생하는 오류입니다.
    print('0으로 나눌 수 없습니다.')

>>>
0으로 나눌 수 없습니다.

이렇게 작성해 줄 수 있겠습니다.

 

except 옆에 방금처럼 오류를 작성해주면 그 작성한 오류가 발생하면 예외처리를 해주는것이고

다른 오류가 발생할경우에는 예외처리를 해주지 않습니다.

 

또한 에러코드에 별명을 지어줘 그 에러코드도 사용할 수도 있습니다.

try:
    result = 123 / 0
except ZeroDivisionError as ZeroErr:  # 나누는 값으로 0 이 들어가면 발생하는 오류입니다.
    print('오류:', ZeroErr)

>>>
오류: division by zero

 

만약 모든 오류에 예외처리를 해주고싶다면

except: 이후 코드를 작성해 주시면 됩니다.

 
try:
    result = 123 / 0
except :  # 나누는 값으로 0 이 들어가면 발생하는 오류입니다.
    print('0으로 나눌 수 없습니다.')

 

except [오류코드] : 이런 형식으로 작성했을때

예외가 발생하지 않았을 경우도 이런식으로 설저할 수있습니다.

조건문에서 사용했던 else를 사용하면 됩니다.

try:
    result = 123 / 1
except ZeroDivisionError as ZeroErr:  # 나누는 값으로 0 이 들어가면 발생하는 오류입니다.
    print('오류:', ZeroErr)
else:
    print('예외 없음')

>>>
예외 없음

주의할점은 반드시 exceopt 뒤에 들어와야 된다는것입니다.

 

 

그리고

오류가 나오든 안나오든 무조건 작동하게하는 finally도 있습니다.

try:
    result = 123 / 0
except ZeroDivisionError as ZeroErr:  # 나누는 값으로 0 이 들어가면 발생하는 오류입니다.
    print('오류:', ZeroErr)
finally:
    print('무조건 실행')

>>>
오류: division by zero
무조건 실행

 


오류코드 두개를 하나의 except에 지정할 수도 있습니다.

try:
    result = 123 / 0
except (ZeroDivisionError, ValueError) as Err:  # () 로 묶어준다.
    print('오류:', Err)

 

 

오류가 발생할 경우 아무것도 안하고 그냥 넘어갈 수도 있습니다.

try:
    result = 123 / 0
except:
    pass

 

예외를 내가 직접 발생시켜 예외처리도 할 수 있습니다.

try:
    n = int(input('뭐로 나눌까요?'))
    if n == 0:
        raise ValueError('입력 문제')
    result = 100 / n
except ValueError as Err:
    print(Err)

 


여기까지 예외처리에 대해 정리해보았습니다.

728x90

'파이썬 > 파이썬 정리' 카테고리의 다른 글

Python) 파이썬 내장함수들  (0) 2023.10.26
Python) Object 클래스  (0) 2023.10.24
Python) getter/setter  (0) 2023.10.23
Python) 정보은닉(Information Hiding)  (1) 2023.10.20
Python) 함수 / 메서드  (0) 2023.10.19