🔥 예외 발생시키기
360자
5분
파이썬에서 예외(Exception)는 프로그램 실행 중에 발생하는 오류나 예기치 않은 상황을 의미합니다. 일반적으로 프로그램이 정상적으로 작동하지 않을 때 발생하며, 이를 적절히 처리하지 않으면 프로그램이 강제 종료됩니다. 그러나 경우에 따라 프로그래머는 의도적으로 예외를 발생시켜 특정 상황을 제어할 필요가 있습니다. 이 장에서는 raise
키워드를 사용하여 파이썬에서 예외를 어떻게 발생시키는지, 그리고 그러한 예외들을 어떻게 효과적으로 활용할 수 있는지에 대해 자세히 살펴보겠습니다.
예외 발생의 기본
파이썬에서 raise
구문을 사용하여 강제로 예외를 발생시킬 수 있습니다. 기본적인 형태는 다음과 같습니다.
raise Exception("에러 메시지")
python
이 구문은 Exception
타입의 예외를 발생시키며, 괄호 안에는 해당 예외에 대한 설명을 문자열로 전달할 수 있습니다.
def check_age(age): if age < 18: raise ValueError("미성년자는 접근할 수 없습니다.") else: print("접근이 허용되었습니다.") try: check_age(17) except ValueError as e: print("발생한 예외:", e)
python
예외 체이닝
예외 체이닝(Exception Chaining)은 하나의 예외가 다른 예외를 발생시키는 과정을 의미합니다. from
키워드를 사용하여 예외 사이의 관계를 명확히 할 수 있습니다.
try: int('a') except ValueError as e: raise RuntimeError("숫자 변환 실패") from e
python
조건에 따른 예외 발생
특정 조건을 만족할 때만 예외를 발생시키는 것도 중요합니다. 이를 통해 예상치 못한 상황을 예방하고 프로그램의 안정성을 높일 수 있습니다.
def divide(x, y): if y == 0: raise ValueError("0으로 나눌 수 없습니다.") return x / y try: result = divide(10, 0) except ValueError as e: print(e)
python
여러 예외 동시 처리
하나의 try
블록에서 여러 종류의 예외를 처리할 수 있습니다. 이는 코드의 간결성을 유지하면서도 다양한 예외 상황에 대처할 수 있게 합니다.
try: # 여러 가지 연산 pass except (TypeError, ValueError) as e: print("Type 또는 Value 에러 발생:", e)
python
예외 재발생
처리한 예외를 다시 발생시키고 싶을 때 raise
를 사용할 수 있습니다. 이는 현재 처리 중인 예외를 호출자에게 다시 전달하는 방법입니다.
def process_file(filename): try: file = open(filename, 'r') # 파일 처리 except IOError as e: print("파일 처리 중 오류 발생") raise finally: file.close() try: process_file("없는파일.txt") except IOError as e: print("파일을 처리하는 과정에서 오류 발생:", e)
python
연습문제
- 양수가 아닌 숫자를 입력했을 때
ValueError
예외를 발생시키는 함수를 작성하세요. - 파일을 읽는 함수에서
FileNotFoundError
와PermissionError
를 각각 처리하는 예외 처리 코드를 작성하세요. raise ... from ...
구문을 사용하여 두 개의 예외를 연결하는 예제를 작성하세요. 첫 번째 예외는KeyError
, 두 번째 예외는LookupError
로 하세요.