[Python] 예외 처리

참조


소개

  • 파이썬을 공부해야 할 일이 생겨서, 위키독스에 올라와 있는 점프 투 파이썬 내용을 보면서 파이썬 공부한 내용을 기록합니다.
  • 보다 자세한 내용은 점프 투 파이썬 해당 사이트에 가셔서 더 깊게 확인하실 수 있습니다.

파이썬 오류 예외 처리 기법

try, except 문

  • 다음은 오류 처리를 위한 try, except 문의 기본 구조입니다.
try:
    ...
except [발생 오류[as 오류 메시지 변수]]:
    ...
  • try 블록 수행 중 오류가 발생하면 except 블록이 수행됩니다.
  • 하지만 try 블록에서 오류가 발생하지 않는다면 except 블록은 수행되지 않습니다.
  • except 구문을 자세히 살펴 봅니다.

    except[발생 오류[as 오류 메시지 변수]]:

  • 위 구문을 보면 [] 기호를 사용하는데, 이 기호는 괄호 안의 내용을 생략할 수 있다는 관례 표기법입니다.
  • 즉 except 구문은 다음 3가지 방법으로 사용할 수 있습니다.

1. try, except 만 쓰는 방법

try:
    ...
except:
    ...

2. 발생 오류만 포함한 except 문

try:
    ...
except 발생 오류:
    ...

3. 발생 오류와 오류 메시지 변수까지 포함한 except문

try:
    ...
except 발생 오류 as 오류 메시지 변수:
    ...

try...finally

  • try 문에는 finally 절을 사용할 수 있습니다.
  • finally절은 try문 수행 도중 예외 발생 여부에 상관없이 항상 수행됩니다.
  • 보통 finally 절은 사용한 리소스를 close 해야 할 때에 많이 사용됩니다.
f = open('foo.txt', 'w')
try:
    # 무언가를 수행한다.
finally:
    f.close()

여러개의 오류처리하기

  • try문 안에서 여러 개의 오류를 처기하기 위해 다음 구문을 사용합니다.
try:
    ...
except 발생 오류1:
   ... 
except 발생 오류2:
   ...
  • 즉 0 으로 나누는 오류와 인덱싱 오류를 다음과 같이 처리할 수 있습니다.
try:
    a = [1,2]
    print(a[3])
    4/0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
except IndexError:
    print("인덱싱 할 수 없습니다.")
  • a는 2개의 요솟값을 가지고 있기 때문에 a[3]는 IndexError를 발생시키므로 "인덱싱할 수 없습니다."라는 문자열이 출력될 것입니다.
  • 인덱싱 오류가 먼저 발생했으므로 4/0으로 발생되는 ZeroDivisionError 오류는 발생하지 않았습니다.
  • 다음과 같이 ZerroDivisionErrorIndexError를 함께 처리할 수도 있습니다.
try:
    a = [1,2]
    print(a[3])
    4/0
except (ZeroDivisionError, IndexError) as e:
    print(e)
  • 2개 이상의 오류를 동일하게 처리하기 위해서는 위와 같이 괄호를 사용하여 함께 묶어 처리하면 됩니다.
728x90

'파이썬(Python)' 카테고리의 다른 글

[Python] 라이브러리  (0) 2022.02.09
[Python] 내장 함수  (0) 2022.02.09
[Python] 클래스(Class)  (0) 2022.02.08
[Python] 함수(Function)  (0) 2022.02.05
[Python] for문  (0) 2022.02.05

이 글을 공유하기

댓글

Designed by JB FACTORY