프로그래밍에서 예외(Exception)는 코드 실행 중 발생할 수 있는 오류를 의미합니다.
파이썬에서는 예외가 발생하더라도 프로그램이 비정상 종료되지 않고, 오류를 적절히 처리하여 계속 실행될 수 있도록 돕는 예외 처리(Exception Handling) 메커니즘을 제공합니다.
이번 포스트에서는 파이썬의 예외 처리 기법을 다루며, 실무에서 활용할 수 있는 예제와 팁을 공부한 내용을 기록하였습니다.
1. 파이썬 예외란 무엇인가?
1.1 예외의 정의
- 예외는 코드 실행 중 발생하는 의도치 않은 상황(에러) 입니다.
- 예외가 발생하면 프로그램의 흐름이 중단됩니다.
1.2 파이썬에서 자주 발생하는 예외
2. 예외 처리 기본 문법
파이썬에서 예외 처리는 `try` , `except`, `else`, `finally` 블록을 사용합니다.
2.1 기본문법
try:
# 예외가 발생할 가능성이 있는 코드
except 예외_타입:
# 예외가 발생했을 때 실행할 코드
else:
# 예외가 발생하지 않았을 때 실행할 코드
finally:
# 예외 발생 여부와 상관없이 항상 실행할 코드
3. 예외 처리 예제
3.1 기본 예제
try:
x = int(input("숫자를 입력하세요: "))
print(10 / x)
except ValueError:
print("유효한 숫자를 입력하세요.")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
3.2 여러 예외 처리
하나의 `except` 블록에서 여러 예외를 처리할 수 있습니다.
try:
lst = [1, 2, 3]
print(lst[5])
except (IndexError, KeyError):
print("인덱스 또는 키 오류가 발생했습니다.")
3.3 모든 예외 처리
모든 예외를 처리하고자 할 때, 예외 타입을 생략할 수 있습니다.
try:
result = 10 / 0
except:
print("예외가 발생했습니다.")
<주의> 모든 예외를 포괄적으로 처리하면 디버깅이 어려울 수 있으므로 권장은 하지 않습니다.
3.4 예외 발생시키기 (`raise`)
필요에 따라 사용자 정의 예외를 발생시킬 수 있습니다.
def check_positive(number):
if number < 0:
raise ValueError("양수를 입력하세요.")
return number
try:
check_positive(-10)
except ValueError as e:
print(e) # 양수를 입력하세요.
4. 사용자 정의 예외
특정한 상황에 맞는 예외를 정의할 수 있습니다.
4.1 사용자 정의 예외 클래스
class CustomError(Exception):
pass
try:
raise CustomError("사용자 정의 예외 발생!")
except CustomError as e:
print(e)
5. 예외 처리의 활용 예제
5.1 파일 처리에서의 예외 처리
try:
with open("data.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
5.2 API 호출에서 예외처리
import requests
try:
response = requests.get("https://api.example.com/data")
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f"API 요청 중 오류 발생: {e}")
6. 예외 처리의 최적화된 사용법
6.1 최소한의 예외 처리
예외 처리는 꼭 필요한 경우에만 사용하여 코드 가독성을 높입니다.
try:
value = int(input("숫자를 입력하세요: "))
except ValueError:
print("숫자만 입력 가능합니다.")
6.2 로그 기록 활용
`logging` 모듈을 활용해 예외를 기록합니다.
import logging
logging.basicConfig(level=logging.ERROR)
try:
result = 10 / 0
except ZeroDivisionError as e:
logging.error(f"예외 발생: {e}")
== 요약 ==
'Python > Basic' 카테고리의 다른 글
파이썬 함수와 클래스 (0) | 2024.11.24 |
---|---|
파이썬 조건문과 반복문 완벽 가이드 (0) | 2024.11.23 |
Data Type 2 - LIST, Tuple, Set, Dictionary (0) | 2024.11.22 |
Python Data Type (3) | 2024.11.22 |
Python의 소개 (0) | 2024.11.19 |