AboutPython

[파이썬] 예외처리

scone 2022. 5. 4. 11:52

[예외, 에러]

  • 예외란, 문법적인 문제는 없으나 발생하는 예상하지 못한 문제
  • 에러란, 소프트웨어적으로 처리할 수 없는 문제
    ex) 문법적, 네트워크 환경, 천재지변 등
  • 다음은 문법적으로는 문제가 없으나 실행 도중에 발생하는 예외의 한 예시이다.
    (그렇다고 해서 예외와 에러를 엄밀하게 구분해서 사용하는 것은 아니다.)
>>> 10/0
Traceback (most recent call last):   
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

[예외 관련 클래스는 Exception 클래스를 상속한다.]

  • 대표적인 예외 클래스들
Exception
    ArithmeticError
        ZeroDivisionError : 0으로 나눴을 때
    EnvironmentError
        IOError : 입출력 에러
    LookupError
        IndexError : 길이가 n인데 인덱스를 n이라고 입력했을 때
    SyntaxError
        IndentationError : 들여쓰기 잘못됐을 때

[예외 처리; try ~ except]

  • 예상하지 못한 예외가 프로그램 전체 실행에 영향이 없도록 처리함
  • try ~ except 을 통해 예외처리를 할 수 있다.
n1 = 10
n2 = 0

try :
    print(n1/n2)
except:
    print('에러 발생')
print(n1+n2)
print(n1*n2)

[실습] 사용자로부터 숫자 5개를 입력받는다. 받을 때 숫자가 아닌 자료형이 입력된다면 예외 처리 하는 프로그램을 만들어보자. 

n=6
while n > 0:
    try :
        int(input('input number : '))
    except :
        print(f'예외 처리 합니다. {n}개를 마저 입력해주세요.')
        continue
    n-=1
'''
input number : 10
input number : 21
input number : 숫자
예외 처리 합니다. 4개를 마저 입력해주세요.
input number : 4
input number : 문자
예외 처리 합니다. 3개를 마저 입력해주세요.
input number : 3
input number : 2
input number : 마지막하나
예외 처리 합니다. 1개를 마저 입력해주세요.
input number : 1
'''