Python

[Python / 기초] 파이썬 error 예외처리 - try, except, else, finally, raise

씨주 2024. 1. 12. 13:20

📍 Error

: SyntaxError, ZeroDivisionError, TypeError, ValueError, KeyError 등

 

✅ 예외처리

try:
    code
except 예외:
    code

# TypeError
num = 'a'
try:
    print(f'100을 {num}으로 나누면 {100/num}입니다.')
except TypeError:
    print('입력한 정보는 숫자가 아닙니다.')
except ZeroDivisionError:
    print('수학적으로 0으로는 나눌 수 없습니다.')
    
# 입력한 정보는 숫자가 아닙니다.

 

# ZeroDivisionError
num = 0
try:
    print(f'100을 {num}으로 나누면 {100/num}입니다.')
except ValueError:
    print('입력한 정보는 숫자가 아닙니다.')
except ZeroDivisionError:
    print('수학적으로 0으로는 나눌 수 없습니다.')
    
# 수학적으로 0으로는 나눌 수 없습니다.

 

# 모든 Error
num = 0
try:
    print(f'100을 {num}으로 나누면 {100/num}입니다.')
except:
    print('무엇인가 잘못되었습니다.')
    
# 무엇인가 잘못되었습니다.

 

# ValueError, ZeroDivisionError 외 Error(NameError)
try:
    print(asdf)
    num = int(input('100을 나눌 값을 입력해주세요 : '))
    print(f'100을 {num}으로 나누면 {100/num}입니다.')
except (ValueError, ZeroDivisionError):
    print('무엇인가 잘못되었습니다.')
except:
    print('wrong')
    
# wrong

 

# except 순서로 인한 error 발생
try:
    num = int(input('100을 나눌 값을 입력해주세요 : '))
    print(f'100을 {num}으로 나누면 {100/num}입니다.')
except:
    print('wrong')
except (ValueError, ZeroDivisionError):
    print('무엇인가 잘못되었습니다.')
더보기
  Cell In[6], line 5
    except:
    ^
SyntaxError: default 'except:' must be last

 

# Error 출력
try:
    my_list = [1, 2, 3]
    print(my_list[100])
except IndexError as err:
    print('범위에 문제가 있습니다.')
    print(err)
    
# 범위에 문제가 있습니다.
# list index out of range

 

✔️ else

: 예외를 일으키지 않을 때 실행되는 코드

try:
    numbers = [1, 2, 3]
    num = numbers[1]
except:
    print('오류발생')
else:
    print(num ** 3)
    
# 8

✔️ finally

: 예외 상황과 무관하게 무조건 최종적으로 실행되는 코드

try:
    numbers = [1, 2, 3]
    num = numbers[100]
except:
    print('오류발생')
finally:
    print('end')

# 오류발생
# end

✔️ raise

: 예외를 강제로 발생시키는 상황에서 사용

for i in range(100):
    if i == 50:
        print(i)
        raise
# 50
# error 출력
더보기
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Cell In[10], line 4
      2 if i == 50:
      3     print(i)
----> 4     raise

RuntimeError: No active exception to reraise