공부중
[Python] 예외처리 본문
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 |