6.2 에러 종류 및 대책

Python에는 다양한 유형의 오류와 예외가 있습니다.

다음은 몇 가지 오류와 이를 처리하는 방법입니다.

1. 구문 오류: 이 오류는 문법 오류로 인한 것입니다.

코드 구문을 확인하고 수정해야 합니다.

# 잘못된 문법
if x 10
대처법: 문법을 올바르게 수정합니다.

if x == 10:

2.이름 실수: 정의되지 않은 변수나 함수를 사용할 때 발생하는 에러입니다.

print(undefined_variable)
대처법: 변수나 함수의 정의를 확인하고 수정합니다.

3.유형 오류: 이 오류는 잘못된 데이터 유형에 대해 작업 또는 함수 호출을 시도할 때 발생합니다.

x = "5" + 3
대처법: 적절한 데이터 타입으로 변환하거나 수정합니다.

python Copy code x = int("5") + 3

4. 제로 피치 오류: 0으로 나눌 때 발생하는 에러입니다.

try:
    result = 10 / x
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.

")

5.FileNotFoundError: 존재하지 않는 파일을 열려고 할 때 발생하는 오류입니다.

with open("nonexistent_file.txt", "r") as f:
    content = f.read()
대처법: 파일 경로를 확인하고, 필요한 경우 예외 처리를 사용합니다.

try: with open("nonexistent_file.txt", "r") as f: content = f.read() except FileNotFoundError: print("파일을 찾을 수 없습니다.

")

6. 값 오류: 잘못된 값이 전달되었을 때 발생하는 오류입니다.

int("abc")
대처법: 값을 확인하고, 필요한 경우 예외 처리를 사용합니다.

try: int_value = int(user_input) except ValueError: print("숫자를 입력해야 합니다.

")

7. 인덱스 오류: 리스트나 튜플과 같은 시퀀스에서 인덱스 범위 밖의 요소에 접근을 시도했을 때 발생하는 오류입니다.

my_list = (1, 2, 3)
print(my_list(3))
대처법: 인덱스가 유효한 범위 내에 있는지 확인하고, 필요한 경우 예외 처리를 사용합니다.

try: print(my_list(3)) except IndexError: print("인덱스 범위를 벗어났습니다.

")

8. 키 오류: 사전에 존재하지 않는 키에 접근하려 할 때 발생하는 오류입니다.

my_dict = {"a": 1, "b": 2, "c": 3}
print(my_dict("d"))
대처법: 키가 딕셔너리에 존재하는지 확인하고, 필요한 경우 예외 처리를 사용합니다.

try: print(my_dict("d")) except KeyError: print("키가 딕셔너리에 존재하지 않습니다.

")

9.속성 오류: 객체에 존재하지 않는 속성이나 메서드를 사용하려고 했을 때 발생하는 오류입니다.

my_string = "Hello, world!
" my_string.non_existent_method() 대처법: 객체의 속성이나 메서드가 올바른지 확인하고, 필요한 경우 예외 처리를 사용합니다.

try: my_string.non_existent_method() except AttributeError: print("속성이나 메서드가 존재하지 않습니다.

")

10.가져오기 오류: 모듈 import시 발생하는 오류입니다.

이 오류는 잘못된 모듈 이름, 경로 문제 또는 누락된 설치로 인해 발생할 수 있습니다.

import nonexistent_module
대처법: 모듈 이름, 경로를 확인하고, 필요한 경우 모듈을 설치하거나 예외 처리를 사용합니다.

try: import nonexistent_module except ImportError: print("모듈을 찾을 수 없습니다.

")

위의 예에서와 같이 대부분의 버그는 코드를 변경하여 수정할 수 있습니다.

그러나 경우에 따라 예외 처리를 사용하여 프로그램이 충돌하지 않고 적절한 조치를 취할 수 있습니다.

위에서 설명한 try, except, else 블록을 사용하여 예외 처리를 구현할 수 있습니다.