[week 1 – day 2]

예외

예외에는 두 가지 주요 유형이 있습니다.

1) 예측 가능한 예외

2) 이것은 예상치 못한 예외입니다.

예상되는 예외는 if 문으로 처리할 수 있지만 예측할 수 없는 예외는 인터프리터 프로세스 중에 발생하는 예외입니다.

try-except 문을 사용하십시오.

try:
    print("start")
    print(abc)
except NameError:
    print("에러발생")
    
 결과>> 
 start
 에러발생

다음과 같이 사용할 수 있습니다.

모든 예외를 참조하는 Exception을 사용할 수 있지만 어떤 종류의 오류인지 알 수 없으므로 사용하지 마십시오.

그렇지 않으면, 마침내, 시도하다

try : 오류가 발생할 것으로 예상되는 코드 작성

except : try 문을 읽다가 오류가 발생하면 건너뜁니다.

else: 오류가 발생하지 않은 경우 else 문으로 이동합니다.

final: 오류 여부와 상관없이 try 문이 종료된 후 실행할 문

승강기

프로그램이 의도하지 않게 실행되는 것을 방지하기 위해 의도적으로 오류를 생성할 때 사용합니다.

a = (1,2,3)
if 2 in a: 
    raise
    
print("good")    

결과>> 런타임에러

실행이 잘 되기 전에 raise가 오류를 발생시키기 때문에 프로그램이 충돌하는지 확인할 수 있습니다.

또한,

a = (1,2,3)
if 2 in a: 
    raise ZeroDivisionError
    
print("good")

결과>> ZeroDivisionError

오류 유형을 재정의할 수 있습니다. raise ZeroDivisionError 문은 0을 나누지 않았는데도 ZeroDivisionError가 발생했음을 확인했습니다.

간물

Python 객체 자체를 파일에 저장

import pickle
f = open("ex1.pickle", "wb")
test = (1,2,3,4)
pickle.dump(test, f) #test란 객체를 ex1.pickle에 옮기는 것
f.close()

바이너리 형식으로 번역 및 생성되었습니다.

import pickle
f = open("ex1.pickle", "rb") # read binary
test = pickle.load(f) #load
print(test)
f.close()

결과>> (1,2,3,4)

rb 옵션을 통해 바이너리 파일 읽기

규약

import logging as l
l.debug("debug용")
l.info("info용")
l.warning("warning용")
l.error("error용")
l.critical("critical용")

심지어
디버그 10
정보 20
경고 30
실수 40
비판적인 50

위와 같은 수준에서 종료합니다.