-
[python] 예외처리python 2025. 5. 29. 15:12
예외처리
프로그램 실행 중 발생할 수 있는 오류(예외)를 우아하게 처리하여 프로그램이 중단되지 않도록 하는 방법입니다.
🔥 왜 예외처리가 필요할까?
코드를 실행할 때 예상하지 못한 상황이 발생할 수 있습니다.
예를 들어:
print(10 / 0) # ZeroDivisionError 발생이 코드는 0으로 나누기를 시도하므로 ZeroDivisionError가 발생하고 프로그램이 강제로 종료됩니다.
하지만 예외처리를 하면 프로그램이 계속 실행되도록 만들 수 있습니다.✅ 기본 구조: try ~ except
try: # 예외가 발생할 수 있는 코드 except 예외종류: # 예외가 발생했을 때 실행되는 코드예시:
try: num = int(input("숫자를 입력하세요: ")) print(10 / num) except ZeroDivisionError: print("0으로 나눌 수 없습니다.") except ValueError: print("숫자가 아닌 값을 입력했습니다.")✅ 추가 옵션
- else: 예외가 발생하지 않았을 때 실행
- finally: 예외 발생 여부와 관계없이 항상 실행
try: print("나눗셈 수행") result = 10 / 2 except ZeroDivisionError: print("0으로 나눌 수 없습니다.") else: print("예외 없이 성공:", result) finally: print("항상 실행되는 finally 블록")🎯 자주 발생하는 예외 종류
예외 설명 ZeroDivisionError 0으로 나눌 때 ValueError 형 변환 실패 등 TypeError 잘못된 타입 사용 IndexError 인덱스 범위 초과 KeyError 딕셔너리에 없는 키 사용 FileNotFoundError 파일이 존재하지 않을 때 📌 정리
- 예외처리를 하면 프로그램이 비정상 종료되지 않도록 방어할 수 있음
- try 블록에서 예외가 발생하면 except에서 처리
- 상황에 따라 else, finally도 함께 사용 가능
실습
try: print("나누기 전용 계산기입니다.") num1 = int(input("첫 번째 숫자를 입력하세요 : ")) num2 = int(input("두 번째 숫자를 입력하세요 : ")) print("{0} / {1} = {2}".format(num1, num2, int(num1/num2))) except ValueError: print("에러! 잘못된 값을 입력하였습니다.")나누기 전용 계산기입니다.
첫 번째 숫자를 입력하세요 : 6
두 번째 숫자를 입력하세요 : 삼
에러! 잘못된 값을 입력하였습니다.try: print("나누기 전용 계산기입니다.") num1 = int(input("첫 번째 숫자를 입력하세요 : ")) num2 = int(input("두 번째 숫자를 입력하세요 : ")) print("{0} / {1} = {2}".format(num1, num2, int(num1/num2))) except ValueError: print("에러! 잘못된 값을 입력하였습니다.") except ZeroDivisionError as err: print(err)나누기 전용 계산기입니다.
첫 번째 숫자를 입력하세요 : 6
두 번째 숫자를 입력하세요 : 0
division by zerotry: print("나누기 전용 계산기입니다.") nums = [] nums.append(int(input("첫 번째 숫자를 입력하세요 : "))) nums.append(int(input("두 번째 숫자를 입력하세요 : "))) #nums.append(int(nums[0] / nums[1])) print("{0} / {1} = {2}".format(nums[0], nums[1], nums[2])) except ValueError: print("에러! 잘못된 값을 입력하였습니다.") except ZeroDivisionError as err: print(err) except Exception as err: print("알 수 없는 에러가 발생하였습니다.") print(err)나누기 전용 계산기입니다.
첫 번째 숫자를 입력하세요 : 6
두 번째 숫자를 입력하세요 : 3
알 수 없는 에러가 발생하였습니다.
list index out of range실습2
try: print("한 자리 숫자 나누기 전용 계산기입니다.") num1 = int(input("첫 번째 숫자를 입력하세요 : ")) num2 = int(input("두 번째 숫자를 입력하세요 : ")) # ❗한 자리 숫자가 아니면 일부러 ValueError 발생시킴 if num1 >= 10 or num2 >= 10: raise ValueError print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2))) except ValueError: print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")한 자리 숫자 나누기 전용 계산기입니다.
첫 번째 숫자를 입력하세요 : 10
두 번째 숫자를 입력하세요 : 5
잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.실습3 (사용자 정의 예외처리)
class BigNumberError(Exception): pass try: print("한 자리 숫자 나누기 전용 계산기입니다.") num1 = int(input("첫 번째 숫자를 입력하세요 : ")) num2 = int(input("두 번째 숫자를 입력하세요 : ")) if num1 >= 10 or num2 >= 10: raise BigNumberError print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2))) except ValueError: print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.") except BigNumberError: print("에러가 발생하였습니다. 한 자리 숫자만 입력하세요.")한 자리 숫자 나누기 전용 계산기입니다.
첫 번째 숫자를 입력하세요 : 10
두 번째 숫자를 입력하세요 : 5
에러가 발생하였습니다. 한 자리 숫자만 입력하세요.class BigNumberError(Exception): def __init__(self, msg): self.msg = msg def __str__(self): return self.msg try: print("한 자리 숫자 나누기 전용 계산기입니다.") num1 = int(input("첫 번째 숫자를 입력하세요 : ")) num2 = int(input("두 번째 숫자를 입력하세요 : ")) if num1 >= 10 or num2 >= 10: raise BigNumberError("입력값 : {0}, {1}".format(num1, num2)) print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2))) except ValueError: print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.") except BigNumberError as err: print("에러가 발생하였습니다. 한 자리 숫자만 입력하세요.") print(err)'python' 카테고리의 다른 글
[python] 모듈 (0) 2025.06.02 [python] finally (0) 2025.05.29 [python] 스타크래프트 프로젝트 (0) 2025.05.29 [python] super (0) 2025.05.28 [python] pass (0) 2025.05.28