제로베이스 데이터 취업 스쿨 과정 학습 내용을 정리한 포스팅입니다.

 

📍 예외 처리

예외: 문법적인 문제는 없으나 실행 중 발생하는 예상하지 못한 문제

 

n1 = 10
n2 = 0

print(n1 / n2) # 문법적 오류는 없으나 0으로 나누는 건 문제 상황이다.

=> 예외 발생: ZeroDivisionError: division by zero


📍 try ~ except

의도한 부분을 try 하고, 오류가 발생할 경우에도 error 발생으로 이후 스크립트가 멈추지 않고 except 이하가 실행되도록 한다.

 

n1 = 10; n2 = 0

try:
    print(n1 / n2)
except:
    n2 += 0.01
    print(n1 / n2)

=> 분모가 0인 오류 상황인데도 에러 발생으로 멈추지 않고, except에서 값을 수정하여 예외 상황에서의 실행으로 이어진다.


📍 try ~ except ~else

예외가 발생하지 않은 경우, else 이하를 실행하도록 한다.

 

n1 = 10; n2 = 1

try:
    print(n1 / n2)
except:
    n2 += 0.01
    print(n1 / n2)
else:
     print("예외 없이 실행되었습니다") # 출력

📍 finally

예외 발생 여부와 관계없이 항상 실행하도록 한다.

n1 = 10; n2 = 1

try:
    print(n1 / n2)
except:
    n2 += 0.01
    print(n1 / n2)
else:
    print("예외 없이 실행되었습니다") # 출력

finally:
    print("모든 작업이 끝났습니다) # 출력

📍 Exception 클래스

Exception 클래스로 예외 상황에서의 에러 메시지를 확인할 수 있다.

n1 = 10; n2 = 1

try:
    print(n1 / n2)
except Exception as e:
    print(f"예외 발생 : {e}")
    n2 += 0.01
    print(n1 / n2)

=> division by zero 출력

 

 

raise를 이용해 강제로 예외를 발생시킬 수 있다.

def sendSMS(msg):
    if len(msg) > 10:
        raise Exception("길이초과! MMS 전환 후 발송", 1)
    else:
        print("SMS 발송!")
        
def sendMMS(msg):
    if len(msg) <= 10:
        raise Exception("길이미달! SMS 전환 후 발송", 2)
    else:
        print("MMS 발송!")
        
 
 msg = "1234567891011"
 
 try:
     sendSMS(msg)
     
 except Exception as e:
     if e.args[1] == 1:
         sendMMS(msg)
     elif e.args[1] == 2:
         sendSMS(msg)

 

📍 파일 열기, 읽기, 쓰기

with ~ as 문을 이용하여 파일을 열고, 읽고, 쓸 수 있다.

 

with open("content/text.txt", 'r') as f: # 읽기
    print(f.read())
    
with open("content/text.txt", 'w') as f: # 쓰기, 이미 있다면 새로 덮어쓴다.
    f.write("안녕하세요.")

with open("content/text.txt", 'a') as f: # 쓰기, 이어서 쓴다.
    f.write("반갑습니다.")

 

📍 writelines()

여러 데이터를 포함한 자료형을 쓸 때 사용

alpha = ['a', 'b', 'c', 'd']

with open('contents/text.txt', 'a') as f:
    f.writelines(alpha)

 

📍 readlines()

파일의 모든 데이터를 읽어서 리스트 형태로 반환

 

with open('contents/text.txt', 'r') as f:
    alpha_lst = f.readlines()

 

+ Recent posts