파이썬에서 예외 처리는 코드 실행 중에 발생할 수 있는 예외나 오류를 처리하는 메커니즘입니다. 예외 처리를 통해 프로그램이 예외 상황에서도 graceful하게 종료되지 않고, 예외에 대한 적절한 조치를 취하거나 사용자에게 메시지를 제공할 수 있습니다.
기본적인 예외 처리 구문
try:
# 실행할 코드
result = 10 / 0 # 예외 발생
except ZeroDivisionError:
# 예외가 발생했을 때 처리할 코드
print("Cannot divide by zero!")
else:
# 예외가 발생하지 않았을 때 실행할 코드
print("Division successful.")
finally:
# 항상 실행할 코드 (예외 발생 여부와 상관없이)
print("This block always runs.")
try, except, else, finally 설명
1. try 블록: 예외가 발생할 수 있는 코드를 포함하는 블록입니다. 이 블록 안에서 예외가 발생하면 바로 해당 예외를 처리할 except 블록으로 이동합니다.
2. except 블록: try 블록에서 예외가 발생했을 때 실행되는 블록입니다. 여러 개의 except 블록이 있을 수 있고, 각 블록은 특정 예외 타입에 대응합니다.
3. else 블록: try 블록에서 예외가 발생하지 않았을 때 실행되는 블록입니다. 이 블록은 선택 사항입니다.
4. finally 블록: 예외 발생 여부와 상관없이 항상 실행되는 블록입니다. 주로 리소스 정리 등의 작업에 사용됩니다.
예외 처리의 다양한 예
try:
x = int(input("Enter a number: "))
result = 10 / x
except ValueError:
print("Invalid input. Please enter a valid number.")
except ZeroDivisionError:
print("Cannot divide by zero.")
else:
print("Division successful.")
finally:
print("This block always runs.")
사용자 정의 예외
class MyCustomError(Exception):
def __init__(self, message="This is a custom error."):
self.message = message
super().__init__(self.message)
try:
raise MyCustomError("Custom error message")
except MyCustomError as e:
print(f"Caught an exception: {e}")
except에서 여러 예외 처리하기
try:
x = int(input("Enter a number: "))
result = 10 / x
except (ValueError, TypeError):
print("Invalid input. Please enter a valid number.")
except ZeroDivisionError:
print("Cannot divide by zero.")
else:
print("Division successful.")
finally:
print("This block always runs.")
여러 예외를 동시에 처리할 때는 괄호로 묶어서 튜플 형태로 나열합니다.
except에서 예외 정보 얻기
try:
x = int("abc") # ValueError 발생
except ValueError as ve:
print(f"Caught a ValueError: {ve}")
except 블록에서 예외 객체를 변수에 할당하여 예외에 관한 정보를 얻을 수 있습니다.
예외 처리는 코드의 안정성을 향상시키고 예측할 수 없는 상황에서의 프로그램 동작을 보호하는 데 도움이 됩니다.
With ChatGPT
'Python > 포스팅' 카테고리의 다른 글
파이썬 오류 예외 처리 기법 (0) | 2023.12.03 |
---|---|
파이썬 오류는 언제 발생하는가? (0) | 2023.12.03 |
파이썬 relative 패키지 (0) | 2023.12.03 |
파이썬 init__.py 의 용도 (0) | 2023.12.03 |
파이썬 패키지 안의 함수 실행 (0) | 2023.12.03 |