본문 바로가기

개발관련

파이썬 강좌 7 - 예외처리

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. 예외 처리의 모범 사례

  1. 구체적인 예외 처리
    너무 많은 예외를 처리하기보다는 발생 가능성이 높은 예외만 처리합니다.
try:
    num = int(input("숫자를 입력하세요: "))
except ValueError:
    print("유효한 숫자를 입력하세요.")
  1. 파일 작업 시 finally 블록 사용
    파일 작업 후 반드시 파일을 닫아야 합니다.
try:
    file = open("example.txt", "r")
except FileNotFoundError:
    print("파일이 없습니다.")
finally:
    file.close()

 

  1. with문 사용 권장
    finally를 대신해 파일이나 자원을 자동으로 닫아줍니다.
try:
    with open("example.txt", "r") as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print("파일이 없습니다.")

 


7. 연습 문제

  1. 사용자 입력값 검증하기
try:
    age = int(input("나이를 입력하세요: "))
    print(f"당신의 나이는 {age}세입니다.")
except ValueError:
    print("유효한 숫자를 입력하세요.")
  1. 딕셔너리 키 접근 시 예외 처리
data = {"name": "바보", "age": 22}
try:
    print(data["job"])
except KeyError:
    print("키가 존재하지 않습니다.")
  1. 0으로 나누기 처리
try:
    x = int(input("숫자를 입력하세요: "))
    result = 10 / x
    print(f"결과: {result}")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
except ValueError:
    print("유효한 숫자를 입력하세요.")

8. 요약

  1. try, except, else, finally 블록으로 예외를 처리할 수 있습니다.
  2. 예외 처리 시 특정 예외를 명시적으로 처리하거나 모든 예외를 포괄적으로 처리할 수 있습니다.
  3. 사용자 정의 예외를 만들어 더 구체적인 오류 처리를 구현할 수 있습니다.
  4. 파일 작업 등 자원 관리 시 예외가 발생하더라도 자원을 적절히 해제해야 합니다.

다음 장에서는 파이썬 모듈과 패키지에 대해 학습하겠습니다! 😊

728x90
반응형