[Python3] 예외 처리

Alexandria·2023년 8월 31일
0

Python3 Basic

목록 보기
16/19
post-thumbnail

1. Try-Except

예외 처리를 위한 구문으로, 프로그램 실행 중 예외가 발생하면 프로그램이 강제 종료되는 것을 방지하고 예외 상황을 처리할 수 있도록 해줍니다.

try 블록 안에서 예외가 발생하면, 해당 예외에 맞는 except 블록으로 이동하여 예외를 처리합니다. 이때 except 블록의 예외 타입과 발생한 예외의 타입이 일치해야 처리가 가능합니다.

0으로 나누는 것은 ZeroDivisionError가 발생하여 try 블록의 코드가 진행되지 않고 except 블록의 코드가 실행되게 됩니다.

try:
    a = 5 / 0
    print(f'a is {a}')
except ZeroDivisionError:
    print('Exception')

예외가 발생하였을 때 오류의 내용을 알고 싶다면 as를 사용하여 오류의 내용을 확인할 수 있습니다.

try:
    a = 5 / 0
    print(f'a is {a}')
except ZeroDivisionError as e:
    print(f'Error : {e}') # Error : division by zero

예외의 경우를 나누는 것이 좋지만 다음과 같이 모든 예외를 처리할 수 있습니다.

try:
    a = 5 / 0
    print(f'a is {a}')
except Exception as e:
    print(f'Error : {e}') # Error : division by zero

💡 오류의 내용이 상관이 없다면 except:만 사용해도 무방합니다.

else를 사용하여도 try 블록에서 예외가 없다면 계속 코드를 진행시킬 수 있습니다.

try:
    a = 5 / 1
    print('try')
except:
    print('except')
else:
    print('else')

2. Finally

코드 실행 중 예외가 발생하거나 정상적으로 실행되거나 상관없이 항상 수행되게 하려면 finally 블록을 사용합니다.

try:
    a = 5 / 1
    print('try') # try
except:
    print('except')
finally:
    print('finally') # finally

3. Raise

프로그램에서 예외적인 상황이 발생하면 이를 처리하기 위해 try-except 문을 사용하여 예외 처리를 할 수 있습니다.

하지만 때로는 특정 조건이 만족되면 예외를 발생시켜 프로그램 흐름을 강제로 중단해야 할 경우가 있습니다. 이때 raise를 사용합니다.

다음은 0으로 나누지 않았지만 raise를 이용하여 고의적으로 ZeroDivisionError를 발생시켰습니다. 일반적인 raise를 발생하고자 한다면 Exception를 사용할 수 있습니다.

try:
    a = 5 / 1
    raise ZeroDivisionError('Hello, Raise!')
except Exception as e:
    print(f'Error : {e}') # Error : Hello, Raise!
else:
    print('else')
profile
IT 도서관

0개의 댓글