[AI] Exception / File / Log Handling

Madeline👩🏻‍💻·2022년 12월 14일
0

네이버 부스트코스 <인공지능 기초 다지기> 강의를 참고하여 작성하였습니다.

1. Exception

프로그램을 사용할 때 일어나는 예상치 못한 오류들을 "Exception, 예외"라고 한다.

1) 예상 가능한 예외

  • 발생 여부를 사전에 인지할 수 있는 예외
  • ex) 사용자의 잘못된 입력, 파일 호출 시 파일 없음
  • 개발자가 반드시 명시적으로 정의해야 함

2) 예상 불가능한 예외

  • 인터프리터 과정에서 발생하는 예외, 개발자 실수
  • ex) 리스트의 범위를 넘어가는 값 호출, 정수 0으로 나눔
  • 수행 불가 시 인터프리터가 자동 호출

3) 예외 처리, Exception Handling

  • 없는 파일을 호출 => 파일 없음을 알림
  • 게임 이상 종료 => 게임 정보 저장

프로그램은 제품이기 때문에, 모든 잘못된 상황에 대처가 필요하다.
=> Exception Handling

1. 처리 방법: try ~ exception

try:
	예외 발생 가능 코드
except <Exception Type>:
	예외 발생 시 대응 코드
  • if문이랑 비슷하다. 파이썬에서는 if문보다 exception 구문을 권장하는 경우가 있다.

  • 0으로 숫자를 나눌 때 예외처리

for i in range (10):#0~9
    try:
        print(10/i)
    except ZeroDivisionError:
        print("Not divided by 0")

//
Not divided by 0
10.0
5.0
3.3333333333333335
2.5
2.0
1.6666666666666667
1.4285714285714286
1.25
1.1111111111111112

2. exception 종류

  • Built-in Exception: 기본적으로 제공하는 예외

IndexError: List의 Index 범위를 넘어갈 때
NameError: 존재하지 않은 변수 호출
ZeroDivisionError: 0으로 숫자 나눔
ValueError: 변환할 수 없는 문자/숫자 변환
FileNotFoundError: 존재하지 않는 파일 호출

=> Exception이 전체 에러를 잡는 경우지만, 에러가 어디서 났는지 명확하지 않아서 좋은 코드가 아님

3. 처리 방법: try ~ except ~ else

  • 복잡해서 좋은 코드가 아님

4. 처리 방법: raise

raise < Exception Type >(예외정보)

  • 필요에 따라 강제로 Exception을 발생시킨다.

=> 과감하게 프로그램 종료시켜서 뒤 과정에서 의미 없는 결과를 내지 않게 방지!

5. 처리 방법: assert

assert (예외조건)

: 특정 조건에 만족하지 않을 경우 예외 발생

def get_binary_nmubmer(decimal_number):
    assert isinstance(decimal_number, int)
    return bin(decimal_number)
print(get_binary_nmubmer(10))

//0b1010

2. File Handling

1) File system, 파일 시스템

: OS에서 파일을 저장하는 트리 구조 저장 체계

2) File from wiki

: 컴퓨터 등의 기기에서 의미있는 정보를 담는 논리적인 단위

  • 모든 프로그램은 파일로 구성되어 있고, 파일을 사용한다.

3) Python File I/O

  • 파이썬은 파일 처리를 위해 "open" 키워드를 사용한다.

f = open(<"파일이름">, "접근 모드")
f.close()

r = 읽기 모드 - 파일을 읽기만 할 때
w = 쓰기 모드 - 파일에 내용을 쓸 때
a = 추가 모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때

  • read() txt 파일 안에 있는 내용을 문자열로 반환
    f = open("~.txt","r")

  • with 구문과 함께 사용
    with open("~.txt","r") as f:
    contents = f.read()

  • 한 줄씩 읽어 List Type으로 반환
    with open("~.txt","r") as my_file:
    content_list = my_file.readlines()

  • 실행 시 마다 한 줄씩 읽어 오기
    with open("~.txt","r") as my_file:
    i = 0
    while True:
    line = my_file.readline()
    if not line:
    break
    print(str(i) + "===" + line.replace("\n",""))
    #한줄씩 값 출력
    i = i+1

  • 단어 통계정보 산출
    with open("~.txt","r") as my_file:
    contents = my_file.read()
    word_list = contents.split(" ")#빈칸기준

3. Log Handling

profile
🍎 Apple Developer Academy@POSTECH 2기, 🍀 SeSAC iOS 4기

0개의 댓글