IT_developers

Python 개념 및 실습 - 예외 본문

Python

Python 개념 및 실습 - 예외

developers developing 2022. 9. 13. 09:00

예외처리, 문법 에러

 

# NameError : 변수가 정의 되지 않았는데 사용할 때

a, b = 10, 15
print(a, b)
print(a, b, c)  # NameError: name 'c' is not defined

 

#런타임 에러 : 실행 했을 때 나는 에러

 

# 0으로 나눌 수 없음

print(10 / 0)  # ZeroDivisionError: division by zero

 

# index 없음

x = [10, 20, 30]
print(x[3]) 

 

# key 값 없음

dict1 = {"name": "hong", "age": 25, "city": "seoul"}
print(dict1["addr"])  

 

# value 값 없음

x = [10, 20, 30]
x.index(40)

 

# 파일 없음

f = open("data/111.txt", "r")

 

# 타입에러

x = [1, 2]
y = (1, 2)
print(x + y)

 

파이썬은 인터프리터 언어이기 때문에 순차적으로 실행.

한줄 실행하고 결과, 한줄 실행하고 결과.

 

# 예외 처리 기법

  • try ~ except 문 : 오류 종류와 상관없이 오류가 발생하기만 하면 except 블록 수행
  • try ~ except  발생오류 : except에 정해 놓은 오류 시 except 블록 수행
  • try ~ except ~ else
  • try ~ finally: 오류 발생 여부와 상관없이 무조건 실행(리소스 해제)
  • try 단독으로는 올 수 없음

 

try:  # 예외 발생 구문
    pass
except:  # 예외가 발생한 경우
    pass
else:  # 예외가 발생하지 않은 경우에 실행(except 절 바로 다음에 위치해야 함)
    pass
finally:  # 예외가 발생 여부 상관없이 무조건 실행
    pass
 
 
 

 # try ~ except

name = ["Kim", "Park", "Choi"]

try:
    z = "let"
    x = name.index(z)
    print("{} Found it! in name {}".format(z, x + 1))
except:
    print("Not found")

try:
    number = int(input("정수입력 >>"))
    print("원 반지름 : ", number)
    print("원 둘레 : ", 2 * 3.14 * number)
    print("원 넓이 : ", 3.14 * number * number)
except:
    print("입력 숫자를 확인해 주세요")

숫자 입력 시 정상 실행

# try ~ except  발생오류

name = ["Kim", "Park", "Choi"]

try:
    z = "let"
    x = name.index(z)
    print("{} Found it! in name {}".format(z, x + 1))
except ValueError:
    print("Not found")
try:
    number = int(input("정수입력 >>"))
    print("원 반지름 : ", number)
    print("원 둘레 : ", 2 * 3.14 * number)
    print("원 넓이 : ", 3.14 * number * number)
except ValueError:
    print("입력 숫자를 확인해 주세요")
 

# try ~ except ~ else

name = ["Kim", "Park", "Choi"]

try:
    z = "Kim"
    x = name.index(z)
    print("{} Found it! in name {}".format(z, x + 1))
except ValueError:
    print("Not found")
else:
    print("OK! Else")

 

try:
    number = int(input("정수입력 >>"))

except ValueError:
    print("입력 숫자를 확인해 주세요")
else:
    print("원 반지름 : ", number)
    print("원 둘레 : ", 2 * 3.14 * number)
    print("원 넓이 : ", 3.14 * number * number)

 

name = ["Kim", "Park", "Choi"]
try:
    z = "let"
    x = name.index(z)
    print("{} Found it! in name {}".format(z, x + 1))
except Exception: #Exception: 어떤 오류가 나는지 모를 때
    print("Not found")

 

# exception 발생오류 as오류 메세지 변수

try:
    4 / 0
except ZeroDivisionError as e:
    print(e)

 

 

# try ~ finally

try:
    f = open("data/info.txt", "r")
finally:
    f.close() #오류가 나든 안나든 닫기
Comments