CodeGym /행동 /Python SELF KO /자주 발생하는 예외

자주 발생하는 예외

Python SELF KO
레벨 17 , 레슨 1
사용 가능

2.1 예외 생성하기

이길 수 없다면 그냥 수용해. 프로그램에서 에러가 발생하는 걸 피할 수 없다면, 그걸 컨트롤하는 방법을 배워야 해. 그러니 의도적으로 예외를 만들어보자.

가장 간단한 예외의 예시는 0으로 나누기야. 프로그램도 간단하지:


x = 100 / 0
        

이런 코드는 에러를 발생시킬 거야:


Traceback (most recent call last):
    File "", line 1, in 
         x = 100 / 0
        ~~~^~   
ZeroDivisionError: division by zero
        

ZeroDivisionError — 이건 예외의 이름이고, division by zero는 그 짧은 설명이야. 또한 Python은 예외가 발생한 줄 번호도 알려줄 거야.

데이터 타입 불일치

물론 다른 예외도 있어. 예를 들어 문자열과 숫자를 더하려고 할 때:


s = "100" + 100
        

이때는 TypeError 예외가 발생할 거야:


Traceback (most recent call last):
    File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'str' and 'int'
        

리스트 인덱스 초과

또 하나의 흔한 에러는 리스트에 없는 요소에 접근할 때 발생하는 거야:


my_list = [1, 2, 3]
print(my_list[10])
        

이때는 IndexError 예외가 발생할 거야:


Traceback (most recent call last):
    print(my_list[10])
        ~~~~~~~^^^^
IndexError: list index out of range
        

예외는 정말 많아. 사실 수천 가지 종류가 있지. 심지어는 특정한 상황을 설명하기 위해 존재하는 예외가 부족하다면 직접 만들 수도 있어. 하지만 가장 인기 있는 건 몇 가지 안 돼.

2.2 가장 인기 있는 예외 목록

예외는 많지만, 신입으로서 가장 잘 알아둬야 할 예외가 있어. 아래에 그 목록을 적어볼게:

예외 설명
Exception 모든 예외의 기본 클래스.
IndexError 시퀀스(예: 리스트, 튜플 등)에서 존재하지 않는 인덱스에 접근할 때 발생.
KeyError 사전에 없는 키에 접근할 때 발생.
NameError 존재하지 않는 변수에 접근할 때 발생.
RuntimeError 다른 타입의 예외에 해당하지 않는 일반적인 런타임 에러.
StopIteration 이터레이션이 끝났다는 신호를 보낼 때 발생.
SyntaxError 코드에 문법적인 오류가 있을 때 발생.
IndentationError 코드의 들여쓰기 오류 시 발생 (SyntaxError의 하위 타입).
TabError 탭과 공백을 섞어 들여쓰기 할 때 발생 (IndentationError의 하위 타입).
TypeError 호환되지 않는 데이터 타입 간의 연산을 시도할 때 발생.
UnboundLocalError 선언되기 전에 로컬 변수를 사용할 때 발생 (NameError의 하위 타입).
ValueError 함수나 연산에 잘못된 값의 인수를 전달할 때 발생.
ZeroDivisionError 0으로 나눌 때 발생.

아마도 신입이니, 처음 몇 개월 동안은 모든 이러한 예외를 겪을 거야. 그리고 이건 나쁜 게 아니야 — 실수로부터 배울 수 있잖아.

2.3 코드의 오류

코드를 짜다가 에러가 발생하는 몇 가지 상황들을 더 살펴보자. 이렇게 하면 나중에 코드에서 에러를 잡아내기 쉬워질 거야:

IndentationError

이 오류는 코드의 들여쓰기가 잘못되었을 때 발생해. 예를 들어, 탭과 공백을 섞거나 들여쓰기의 양이 맞지 않을 때.


def example():
    print("Hello")
     print("World")  # 잘못된 들여쓰기 때문에 IndentationError 발생
        
example()
        

NameError


def example():
    print(undeclared_variable)  # 선언되지 않은 변수를 사용하려고 하면 NameError 발생
        
example()
        

ValueError

이 오류는 연산이나 함수가 올바른 타입이지만 잘못된 값을 받았을 때 발생해.


def example():
    int("abc")  # 숫자가 아닌 문자열을 정수로 변환하려고 하면 ValueError 발생
        
example()
        

KeyError

이 오류는 프로그램이 사전에 없는 키에 접근하려고 할 때 발생해.


def example():
    my_dict = {"a": 1, "b": 2}
    print(my_dict["c"])  # 존재하지 않는 키에 접근하려고 하면 KeyError 발생
        
example()
        

SyntaxError

이 오류는 코드에 문법적인 오류가 있을 때 발생해. 즉, 코드가 Python 언어의 문법에 맞지 않을 때.


def example():
    eval("if True print('Hello')")  # 잘못된 문법 때문에 SyntaxError 발생
        
example()
        

미리 알면 준비가 된 거야. 이제 너는 에러를 유발하는 상황들을 인식하고 만들 수 있어. 이제 이 에러들을 처리하는 법을 배울 시간이다.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION