지금까지 코드를 작성하면서 많은 오류를 확인할 수 있었다.

대표적인 오류 : KeyError, IndexError, TypeError

# KeyError
딕셔너리 = {"키":"값"}
값 = 딕셔너리["존재하지 않는 키"]

# 결과
KeyError: '존재하지 않는 키'
# IndexError
fruit_list = ["Apple", "Banana", "Pear"]
fruit = fruit_list[3]

# 결과IndexError: list index out of range
# TypeError
text = "abc"
print(text + 5)

# 결과
TypeError: can only concatenate str (not "int") to str

예외처리의 방법

try, except, else, finally 를 사용.

try :
    오류를 실행할 수 있는 구문

except :
    오류가 발생했을 때 실행할 구문

else :
    오류가 발생하지 않았을 때 실행할 구문

finally:
    오류와 상관없이 무조건 실행할 구문

예시

try :# 오류를 발생시킬 수 있는 구문
    file = open("a_file.txt")
    a_dictionary = {"key" : "value"}
    print(a_dictionary["key_2"])

except FileNotFoundError :# FileNotFoundError 발생 시 실행할 구문
    file = open("a_file.txt", "w")
    file.write("안녕하세요")

except KeyError :# KeyError 발생 시 실행할 구문print("키가 존재하지 않아요")

else :# 오류가 발생하지 않을 시 실행할 구문
    content = file.read()
    print(content)

finally:# 무조건 실행할 구문
    file.close()

raise 구문

raise 구문은 예외를 발생시킬 때 사용한다.

예외를 발생시켜야하는 구문 예시

height = float(input("Height : "))
weight = int(input("Weight : "))

if height > 3:
    raise ValueError("인간은 키가 3m를 넘길 수 없어요.")

bmi = weight / height ** 2
print(bmi)

# 결과값ValueError: 인간은 키가 3m를 넘길 수 없어요.

26일차에 작성한 NATO 알파벳 프로그램 예외처리하기

알파벳이 아닌 문자를 입력시 발생하는 오류 예외처리.

import pandas

data = pandas.read_csv("nato_phonetic_alphabet.csv")
data_dict = {row.letter:row.code for (index, row) in data.iterrows()}

word = input("영문 문자를 입력해주세요.")
word_list = [n.upper() for n in word]
try :
    result = [data_dict[n] for n in word_list]
except KeyError :
    print("죄송합니다. 알파벳만 입력해주세요.")
else :
    print(result)

JSON 데이터

json 데이터는 기본적으로 딕셔너리 형태를 하고있다.

json.dump() - 쓰기