반응형
파이썬에서 예외(Exception)는 프로그램 실행 중 발생할 수 있는 오류를 의미합니다. try-except 문을 사용하면 예외를 처리하여 프로그램이 중단되지 않도록 할 수 있습니다.
🔹 1. 기본 예외 처리
try-except 블록을 사용하여 예외를 처리할 수 있습니다.
✅ 기본 예외 처리 문법
try:
num = int(input("숫자를 입력하세요: "))
print(10 / num) # 0 입력 시 예외 발생
except ZeroDivisionError:
print("0으로 나눌 수 없습니다!")
except ValueError:
print("숫자를 입력해야 합니다!")
📌 설명:
- ZeroDivisionError: 0으로 나누려 할 때 발생하는 예외
- ValueError: 입력값이 숫자가 아닐 때 발생하는 예외
🔹 2. 모든 예외 처리 (Exception)
특정 예외를 지정하지 않고 모든 예외를 처리할 수도 있습니다.
✅ 모든 예외 처리하기
try:
result = 10 / int(input("숫자를 입력하세요: "))
print(result)
except Exception as e:
print(f"오류 발생: {e}")
📌 설명:
- Exception as e를 사용하면 발생한 오류 메시지를 출력할 수 있음
- 너무 광범위한 예외 처리는 디버깅을 어렵게 만들 수 있음
🔹 3. else와 finally
else 블록은 예외가 발생하지 않았을 때 실행됩니다. finally 블록은 예외 발생 여부와 관계없이 항상 실행됩니다.
✅ else와 finally 활용하기
try:
num = int(input("숫자를 입력하세요: "))
result = 10 / num
except ZeroDivisionError:
print("0으로 나눌 수 없습니다!")
else:
print("연산 성공! 결과:", result)
finally:
print("프로그램 종료")
📌 설명:
- else: 예외가 발생하지 않으면 실행됨
- finally: 무조건 실행됨 (예외 발생 여부와 상관없음)
🔹 4. 사용자 정의 예외
직접 예외를 정의하여 특정 조건에서 예외를 발생시킬 수도 있습니다.
✅ 사용자 정의 예외 만들기
class NegativeNumberError(Exception):
pass
try:
num = int(input("양수를 입력하세요: "))
if num < 0:
raise NegativeNumberError("음수는 허용되지 않습니다!")
print("입력한 숫자:", num)
except NegativeNumberError as e:
print("오류 발생:", e)
📌 설명:
- raise를 사용하여 예외를 강제로 발생시킬 수 있음
- NegativeNumberError는 사용자가 정의한 예외 클래스
🔹 5. 마무리
이번 문서에서는 파이썬의 예외 처리 방법을 학습했습니다.
✅ 핵심 요약
- try-except 문을 사용하여 예외를 처리할 수 있음
- except에 특정 예외 유형을 지정하여 처리 가능
- else는 예외가 발생하지 않았을 때 실행됨
- finally는 항상 실행됨
- raise를 사용하여 사용자 정의 예외를 발생시킬 수 있음
반응형
'IT > Python Basic' 카테고리의 다른 글
[Python] 초급 개념14 - 모듈과 패키지 (import, from, as) (0) | 2025.02.18 |
---|---|
[Python] 초급 개념13 - 클래스와 객체 (OOP 기본 개념) (0) | 2025.02.18 |
[Python] 초급 개념12 - 리스트 컴프리헨션 (0) | 2025.02.18 |
[Python] 초급 개념11 - 문자열 다루기 (split, join, format 등) (0) | 2025.02.18 |
[Python] 초급 개념9 - 파일 입출력 (I/O) (0) | 2025.02.18 |
[Python] 초급 개념8 - 집합 (set) (0) | 2025.02.18 |
[python] (부록)파이썬의 a for b in range(c) 문법 (0) | 2025.02.18 |
[Python] 초급 개념7 - 딕셔너리 (dict) (0) | 2025.02.18 |
댓글