공부중

[Python] 예외처리 본문

프로그래밍/파이썬 Python

[Python] 예외처리

복습 2024. 7. 19. 11:57
728x90

 

1. 기본 구조 

 

try:
    print("오류 없구")
    a = 1
    if a == 1:
        raise Exception("내가 오류 발생시키고 싶었어")
    raise
except Exception as e:
    print(f"{type(e)}, {e}")

 

 

 

 

.__name__를 사용하면 이렇게도 할수있다

 

 

 

만약 finally까지 포함하면.. 

try:
    print("오류 없구")
    a = 1
    if a == 1:
        raise Exception("내가 오류 발생시키고 싶었어")
    raise
except Exception as e:
    print(f"{type(e)}, {e}")

finally:
    print('그래도 끝')

 

 

3. 오류의 종류

오류 종류 설명
ValueError 인자로 다른 자료형의 값을 전달한 경우 발생한다.
예를들어, int(4.5)과 같은 경우 발생한다.
IndexError  자료구조에서 인덱스의 범위를 벗어난 경우 발생한다.
예를 들어 lst = [1, 3, 5] 인데 lst[6]을 한 경우 lst의 인덱스는 0, 1, 2만 존재하므로 오류가 발생한다.
lst = [1, 2, 3, 3, 3]
print[lst[8]]

NameError  값이 저장되지 않은 변수를 사용한 경우 발생한다.
TypeError 허용되지 않은 자료형을 사용할 경우 발생한다.
FileNotDoundError 파일을 찾을 수 없는 경우 발생한다.
ZeroDivisionError 0으로 나눈 경우 발생한다.
UnicodeDecodeError utf-8 방식으로 한글 문자열을 저장한 파일이 있다고 할 때, cp949 형식으로 열고 읽으면 오류가 발생한다.
UnicodeDecodeError: 'cp949' codec can't decode byte
0xed in position 0: illegal
SyntaxError 문법 오류이다.

 

 

 

 

오류의 종류를 반환하는 코드

1. type를 반환하는 코드

def print_exception_info():
    try:
        # num = int(input("숫자를 입력하세요: "))
        num = 0
        result = 100 / num
        print("결과:", result)
    except Exception as e:
        print(f"오류: {type(e).__name__}, 설명: {e}")
# 함수 호출
print_exception_info()

 

 

2. sys를 사용하는 코드

import sys
import traceback

try:
    fname = "c:\\user"
    f = open(fname)
    lines = f.readlines()
    f.close()
except Exception as e:
    exc_type, exc_value, exc_traceback = sys.exc_info()
    print(f"오류 타입: {exc_type}")
    print(f"오류 값: {exc_value}")
    print(f"트레이스백 정보: {traceback.print_tb(exc_traceback)}")
728x90

'프로그래밍 > 파이썬 Python' 카테고리의 다른 글

[python] lamda 표현식  (0) 2024.07.29
[python] GUI - turtle  (0) 2024.07.26
[python] 리스트 컴프리헨션(List Comprehension)  (0) 2024.07.25
딕셔너리 값 입력 받기  (1) 2024.07.22
[Python] dictionary - get()  (0) 2024.07.22