[Python] 전 유부녀랑 데이트하지 않아요.

장세민·2023년 2월 22일
0

📝 TIL

목록 보기
33/40
post-thumbnail

이 남자는 귀찮아서 예외를 허용하지 않는다는 핑계로
아내랑 데이트 하기 싫어한다.

하지만 파이썬에서는 예외를 허용한다.
어떻게 허용하는 지 알아보자.




예외 처리

실습을 하다보면 오류를 빈번하게 마주하게 된다.
오류는 어떤 코드가 잘못됐는지 확인하고 수정할 수 있는 고마운 장점을 주지만,
가끔 오류를 무시하고 실행하고 싶을 때도 있다.

이는 파이썬에서 try, except를 사용해서 예외적으로 오류를 처리할 수 있게 해준다.

예외(exception)는 코드를 실행하는 중에 발생한 에러를 뜻한다.

다음 코드를 실행시켜 보자.

def ten_div(x):
    res = 10 / x
    return res
 
print(ten_div(2))
print(ten_div(0))

ten_div(2)는 문장은 잘 실행되지만,
ten_div(0) 문장은 4를 0으로 나누려니까 ZeroDivisionError 오류가 발생한다.


다음 코드를 보자.

a = [1, 2, 3]
print(a[4])

a 리스트에서 a[4]는 얻을 수 없는 값이다.
따라서 IndexError가 발생한 것을 알 수 있다.

이런 오류들을 처리할 수 있는 예외 처리 기법을 알아보자.

예외 처리 기법

try, except 문

1. try, except만 쓰는 방법

  1. try:
  2. x = int(input())
  3. y = 10 / x
  4. print(y)
  5. except:
  6. print('예외가 발생했습니다.')

0을 입력했는데, ZeroDivisionError가 아닌 except 문이 실행됐다.

이처럼 try, except 문을 사용하면 오류가 발생한 문장 다음으로 넘어가지 않고,
바로 except 문이 실행된다.
즉, x = int(input()) 다음 문장부터는 실행되지 않는 것이다.

2. 특정 예외 처리

  • except에 예외 이름 지정
    1. try:
    2. x = int(input())
    3. y = 10 / x
    4. print(y)
    5. except ZeroDivisionError:
    6. print('0으로 나눌 수 없습니다.')

이 경우는 오류가 발생했을 때 except문에 미리 정해 놓은 오류 이름과 일치할 때만 except 문을 실행한다.


  • 예외의 에러 메시지 가져오기
    1. try:
    2. x = int(input())
    3. y = 10 / x
    4. print(y)
    5. except ZeroDivisionError as e:
    6. print(e)
    7. except IndexError as e:
    8. print(e)

이 경우는 오류의 내용까지 알고 싶을 때 사용하는 방법이다.


만약, 여러 개의 오류가 발생하면?

  1. try:
  2. a = [1,2]
  3. print(a[3])
  4. print(4 / 0)
  5.  
  6. except ZeroDivisionError as e:
  7. print(e)
  8. except IndexError as e:
  9. print(e)


이와 같이 먼저 발생한 예외의 처리코드만 실행된다.
(또는 예외 중 높은 계층의 예외부터 처리된다. 기반 클래스 > 파생 클래스)


참고

예외도 클래스 상속으로 구현되며
보통 파이썬에서 새로운 예외를 만들 때는 Exception을 상속 받아서 구현한다.

파이썬 코딩 도장: try except로 사용하기

예외 처리 잘 써먹어보자~_~

profile
분석하는 남자 💻

0개의 댓글