Python 참조/Python 책정리

Chapter16 에러와 예외처리

Snowboarder 2022. 5. 4. 10:35
  • 파이썬으로 코딩해보면 다양한 에러를 보게 됩니다. 에러는 코드를 완전히 수정해야 하거나 코드에 추가적으로 수정하여 에러를 해결할 수 있습니다. 16장에서는 파이썬 에러 종류를 정리하고, 에러 해결 방법을 학습합니다. 이를 위해 에러 종류를 알아보고, 코드에 에러가 발생하면 스스로 처리할 수 있도록 연습합니다.

1. 에러와 예외

  • 예외 : 파이썬에는 발생하는 모든 에러들을 묶어서 '예외' 라고 부릅니다.
  • SyntaxError, TypeError, NameError, IndexError, ValueError, KeyError
  • SyntaxError는 파이썬 문법을 잘못 사용해서 발생한 에러이고 나머지는 문법을 잘못 사용한 에러가 압니다.
  • SyntaxError 발생 원인
    • print() 함수의 인수에 따옴표가 빠져있다.
    • 괄호가 잘못 되었습니다.
    • if 줄 끝에 콜론(:)이 빠졌어요
    • += 기호는 붙여서 써야 합니다.
    • =< 기호는 없습니다. < = 이라고 써야합니다.

2. 에러 종류

AttributeError

  • 모듈에 있는 속성을 잘못 사용했을 때나, 클래스에 있는 속성을 잘못 사용했을 때 발생

IndexError

  • 인덱스를 잘못 사용하여 범위를 벗어난 경우에 발생하는 에러입니다.
  • 주로 시퀀스 자료형(순서가 있는 자료형)에서 발생

KeyError

  • 집합과 사전에서 발생합니다.
    • 빈 집합에서 pop() 메소드를 적용하거나, 집합에 없는 원소를 remove()하면 KeyError가 발생
    • 사전에 없는 키를 이용하면 KeyError가 발생

ValueError

  • 어떤 값을 가져올 수 없는 경우에 발생하는 에러입니다.
    • 리스트에 없는 원소 x에 대해서 remove(x)하거나 또는 index(x)속성을 적용하면 ValueError발생
    • 튜플도 없는 원소의 인덱스를 알기 위해 index(x) 속성을 적용하면 ValueError가 발생

FileNotFoundError

  • 없는 파일을 open()할 떄 발생하는 에러입니다.

TypeError

  • 자료형에 맞는 연산을 수행하지 않는 경우에 발생

NameError

  • 만들지 않은 변수를 사용하려는 경우에 발생

3. 예외 처리 기초

  • 에러가 발생하는 부분에 예외처리 코드를 추가하여 코드를 깔끔하게 정리할 수 있습니다.
  • 예외처리는 반드시 try 키워드로 시작해야하고 try 구문 아래에는 구문이 1개이상 올수 있습니다.
  • except 구문이 에러가 발생했을 때 어떻게 처리해야 하는지를 명시하는 부분입니다.
  • 그 외에 else, finally 구문이 있을 수 있습니다.

코드에 에러가 한 개인 경우의 예외 처리

코드에 에러가 여러 개인 경우의 예외

except 옆에 아무 에러도 적지 않는 경우

  • 아무 것도 적지 않을 수도 있고, except 옆에 Exception이라고 넣을 수 도 있다

except ~ as 구문

  • except ~ as 표현을 이용해서 에러 메시지를 출력해 볼 수 있다.

except : pass 구문

  • 어떤 에러가 발생하더라도 아무 일도 하지 않겠다는 뜻입니다.

4. else 블록 이해하기

  • else 구문이 있는 경우, 에러가 발생하지 않은 경우에 수행되는 구문입니다.

5. finally 블록 이해하기

  • finally 구문은 예외와 상관없이 무조건 수행되는 코드 블록입니다.
    • try~ finally 만 있는 구문

6. 예외를 직접 발생시키기 - raise

  • 예외를 발생시키는 키워드 : raise

7. 정리

  • 파이썬 에러는 크게 SyntaxError와 다른 에러들로 나뉜다.
  • KeyError, ValueError, FileNotFoundError의 경우는 조심하더라도 발생하기 쉬운 에러이다.

'Python 참조 > Python 책정리' 카테고리의 다른 글

[python 문법] dictionary 정리  (0) 2022.10.19
Chapter17 클래스와 객체 지향 개념  (0) 2022.05.04
Chapter15 모듈  (0) 2022.05.04
Chapter14 파일 입출력  (0) 2022.05.04
Chapter13 함수  (0) 2022.05.04