⏰ 2024.12.20 (D+52)
try: # 예외가 발생할 만한 코드 except 예외명: # 예외가 발생했을 때 처리할 코드 else: # 예외가 발생하지 않았을 때 실행할 코드 finally: # 예외 발생 여부와 상관없이 항상 실행할 코드
try: 예외가 발생할 가능성이 있는 코드를 작성except: 특정 예외가 발생했을 때 실행되는 코드else: 예외가 발생하지 않았을 때 실행되는 코드finally: 예외 발생 여부에 관계없이 항상 실행되는 코드
try: # 예외가 발생할 만한 코드 except (예외명1, 예외명2): # 예외명1 또는 예외명2가 발생했을 때 처리할 코드📖 예시
try: # 예외가 발생할 만한 코드 except ValueError: print("숫자만 입력하세요.") except ZeroDivisionError: print("0으로 나눌 수 없습니다.") except IndexError: print("인덱스 범위를 벗어났습니다.")
- 여러 예외를 한 번에 처리할 수 있음
- except (ValueError, ZeroDivisionError)로 한 번에 처리 가능
raise Exception("예외 메시지")📖 예시
value = int(input('숫자 입력?')) if value % 2 != 0: raise Exception(f'{value}는 짝수가 아니예요')
- raise를 사용하여 예외를 명시적으로 발생시킬 수 있음
방법 1: Exception 상속
class NotEvenException(Exception): def __init__(self): super().__init__('짝수가 아니예요') try: value = int(input('숫자 입력?')) if value % 2 != 0: raise NotEvenException() print(f'{value}는 짝수예요') except NotEvenException as e: print(e)
- Exception을 상속받아 예외 클래스를 정의
- super().init(예외 메시지)로 부모 클래스의 init() 호출
방법 2: 매개변수로 예외 메시지 전달
class NotEvenException(Exception): def __init__(self, errorMessage): super().__init__(errorMessage) try: value = int(input('숫자 입력?')) if value % 2 != 0: raise NotEvenException('홀수 입력 에러') print(f'{value}는 짝수예요') except NotEvenException as e: print(e)
- 예외 발생 시 메시지를 매개변수로 전달 가능
방법 3: 간단한 사용자 정의 예외
class NotEvenException(Exception): pass try: value = int(input('숫자 입력?')) if value % 2 != 0: raise NotEvenException('홀수 입력 에러') print(f'{value}는 짝수예요') except NotEvenException as e: print(e)
- 메시지 없이 단순히 예외를 발생시키는 방법
try블록: 예외가 발생할 수 있는 코드를 실행except블록: 예외가 발생하면 해당 예외를 처리else블록: 예외가 발생하지 않으면 실행finally블록: 예외 발생 여부와 관계없이 항상 실행
try: fnum = int(input('첫번째 숫자 입력?')) snum = int(input('두번째 숫자 입력?')) result = fnum / snum except ValueError: print("숫자만 입력하세요.") except ZeroDivisionError: print("0으로 나눌 수 없습니다.") except Exception as e: print("예상치 못한 에러 발생:", e) else: print(f"결과: {result}") finally: print("처리 완료.")
try: 사용자 입력을 받아 계산 시도except: 예외 발생 시 처리else: 예외가 발생하지 않으면 결과 출력finally: 예외 발생 여부와 관계없이 항상 실행