728x90
반응형
2024.12.20 - [개발관련] - 파이썬 강좌 6 - 파일 입출력
파이썬 강좌 6 - 파일 입출력
2024.12.20 - [개발관련] - 파이썬 강좌 5 - 함수 파이썬 강좌 5 - 함수2024.12.20 - [개발관련] - 파이썬 강좌 4 - 함수 파이썬 강좌 4 - 함수2024.12.20 - [개발관련] - 파이썬 강좌3 - 파이썬 제어문 파이썬 강
woowonwoo.tistory.com
7장: 파이썬 예외 처리
프로그래밍 중에는 예상치 못한 오류가 발생할 수 있습니다. 이러한 상황에서도 프로그램이 멈추지 않고 적절히 대처하도록 하는 것이 중요합니다.
이 장에서는 파이썬 예외 처리의 개념과 실습을 통해 오류를 다루는 방법을 배웁니다.
1. 예외(Exception)란?
예외는 프로그램 실행 중에 발생하는 오류를 말합니다.
예외가 발생하면 프로그램 실행이 중단되지만, 이를 처리하면 정상적으로 실행을 계속할 수 있습니다.
1.1 주요 예외의 종류
예외 이름발생 원인
ZeroDivisionError | 0으로 나눌 때 발생 |
FileNotFoundError | 존재하지 않는 파일을 열려고 할 때 발생 |
ValueError | 잘못된 값이 입력될 때 발생 |
IndexError | 리스트의 잘못된 인덱스에 접근할 때 발생 |
KeyError | 딕셔너리에 없는 키를 참조할 때 발생 |
2. 기본 예외 처리
예외 처리는 try, except 블록을 사용합니다.
try:
# 예외가 발생할 가능성이 있는 코드
except 예외_타입:
# 예외 발생 시 실행할 코드
2.1 예제: 0으로 나누기
try:
result = 10 / 0
except ZeroDivisionError:
print("0으로 나눌 수 없습니다!")
2.2 모든 예외 처리
try:
x = int("abc")
except Exception as e:
print(f"오류가 발생했습니다: {e}")
3. 여러 예외 처리
하나의 try 블록에서 여러 종류의 예외를 처리할 수 있습니다.
try:
x = int("abc")
y = 10 / 0
except ValueError:
print("잘못된 값입니다.")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
4. 예외 처리의 추가 기능
4.1 else 블록
예외가 발생하지 않은 경우 실행됩니다.
try:
result = 10 / 2
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
else:
print("결과:", result) # 출력: 결과: 5.0
4.2 finally 블록
예외 발생 여부와 관계없이 항상 실행됩니다.
try:
file = open("example.txt", "r")
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
finally:
print("작업이 종료되었습니다.")
5. 사용자 정의 예외
파이썬에서는 사용자가 예외를 정의할 수 있습니다.
class CustomError(Exception):
def __init__(self, message):
self.message = message
try:
raise CustomError("이것은 사용자 정의 예외입니다!")
except CustomError as e:
print(f"예외 발생: {e.message}")
6. 예외 처리의 모범 사례
- 구체적인 예외 처리
너무 많은 예외를 처리하기보다는 발생 가능성이 높은 예외만 처리합니다.
try:
num = int(input("숫자를 입력하세요: "))
except ValueError:
print("유효한 숫자를 입력하세요.")
- 파일 작업 시 finally 블록 사용
파일 작업 후 반드시 파일을 닫아야 합니다.
try:
file = open("example.txt", "r")
except FileNotFoundError:
print("파일이 없습니다.")
finally:
file.close()
- with문 사용 권장
finally를 대신해 파일이나 자원을 자동으로 닫아줍니다.
try:
with open("example.txt", "r") as file:
content = file.read()
print(content)
except FileNotFoundError:
print("파일이 없습니다.")
7. 연습 문제
- 사용자 입력값 검증하기
try:
age = int(input("나이를 입력하세요: "))
print(f"당신의 나이는 {age}세입니다.")
except ValueError:
print("유효한 숫자를 입력하세요.")
- 딕셔너리 키 접근 시 예외 처리
data = {"name": "바보", "age": 22}
try:
print(data["job"])
except KeyError:
print("키가 존재하지 않습니다.")
- 0으로 나누기 처리
try:
x = int(input("숫자를 입력하세요: "))
result = 10 / x
print(f"결과: {result}")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
except ValueError:
print("유효한 숫자를 입력하세요.")
8. 요약
- try, except, else, finally 블록으로 예외를 처리할 수 있습니다.
- 예외 처리 시 특정 예외를 명시적으로 처리하거나 모든 예외를 포괄적으로 처리할 수 있습니다.
- 사용자 정의 예외를 만들어 더 구체적인 오류 처리를 구현할 수 있습니다.
- 파일 작업 등 자원 관리 시 예외가 발생하더라도 자원을 적절히 해제해야 합니다.
다음 장에서는 파이썬 모듈과 패키지에 대해 학습하겠습니다! 😊
728x90
반응형
'개발관련' 카테고리의 다른 글
Firebase Cloud Functions에서 puppeteer 실행이 안될때 (0) | 2024.12.21 |
---|---|
Firebase Cloud Functions Deploy 해도 반영 안될때 (0) | 2024.12.21 |
파이썬 강좌 9 - 객체지향 (1) | 2024.12.20 |
파이썬 강좌 8 - 모듈과 패키지 (1) | 2024.12.20 |
파이썬 강좌 6 - 파일 입출력 (0) | 2024.12.20 |
파이썬 강좌 5 - 자료구조 (0) | 2024.12.20 |
파이썬 강좌 4 - 함수 (0) | 2024.12.20 |
파이썬 강좌3 - 파이썬 제어문 (1) | 2024.12.20 |