Python 14 Error 종류 & 예외처리

김민호·2021년 9월 29일
1

Python

목록 보기
15/16
post-thumbnail

1. Python Error

1) KeyError

  • "키 없음"

  • 주로 딕셔너리 사용시 발생하는 에러

  • 없는 Key 값에 접근하려고 할 때 발생

  • 이럴 때 get() 메소드를 사용할 수 있다

    ① 딕셔너리['키']가 먼저 나온 상황

    ② 딕셔너리.get('키')가 먼저 나온 상황

  • ①과 ②의 차이점
    ①처럼 Bracket Notation으로 객체의 없는 키에 접근하면 KeyError가 나면서 밑의 코드는 실행되지 않게 된다(=> http 요청 받는 상황에서 발생하면 서버 터짐)
    하지만 ②처럼 get메소드로 객체의 없는 키에 접근하면 None(혹은 설정한 값)을 반환하고 이어서 밑의 코드를 쭉 실행한다

2) ValueError

① 부적절한 값을 가진 인자를 받았을 때 발생하는 에러

  • int함수 안에는 int("10")과 같이 숫자로 변경할 수 있는 문자열이 와야 하는데, 이렇게 숫자로 변경할 수 없는 문자열이 오는 것처럼 부적절한 인자가 올 때 발생

② 참조값이 없을 때

  • 리스트에서 없는 값에 접근하려고 할 때 발생

③ cf) IndexError

  • 없는 인덱스 값에 접근하려고 할 때 발생

3) SyntaxError

  • 문법 오류
  • 이렇게 조건문에서 :을 빼먹거나 문법이 잘못될 때 발생

4) NameError

  • 지역변수, 전역변수의 이름을 찾을 수 없는 경우 발생

5) ZeroDivisionError

  • 숫자를 0으로 나누려는 경우 발생

6) FileNotFoundError

  • 존재하지 않는 파일이나 디렉토리에 접근하려 할 때

7) TypeError

  • 서로 다른 타입으로 연산하려고 할 때 발생

8) AttributeError

  • 잘못된 메서드나 속성을 호출하거나 대입했을 때 발생

9) ConnectionError

  • 서버를 켜지 않았을 때 발생
  • manage.py 가 있는 프로젝트 디렉토리로 이동하여 python manage.py runserver 실행
  • python manage.py runserver 0:8000 모든 컴퓨터에서 내 서버로 접속 가능

https://hleecaster.com/python-exception/
https://blockdmask.tistory.com/550


2. 예외처리 전략

EAFP

  • “It’s Easier to Ask Forgiveness than Permission”
  • 미리 허락을 구하는 것보다는 나중에 용서를 구하는게 쉽다는 말
  • 에러가 발생할 모든 상황을 미리 설정하는 것이 아니라, 일단 예외가 발생하지 않을 것이라는 가정을 하고 코딩 진행. 그러다 에러가 발생하면 그때 예외처리 실행
  • 일단 수행(try)시키고, 에러가 발생하면 그때 처리(except)하겠다는 것
  • 파이썬에서 권장하는 방법

LBYL

  • "Look Before You Leap”
  • 돌다리도 두드려 보고 건너라
  • 코드를 실행하기 전에 발생할 수 있는 에러의 조건을 다 가정하고 처리할지 조건문(if)으로 코딩하는 방법

예외처리

https://wikidocs.net/30

에러가 발생했을 때

  • 위에서 정리한 것처럼 에러가 발생하면 그 위치에서 프로그램은 종료되기 때문에 에러가 발생한 지점 이후의 코드들은 실행이 되지 않는다
  • 유저가 사용하는 프로그램에서 에러가 발생했을 대 프로그램이 종료되어버린다면 큰 문제
  • 그러므로 에러를 처리하는 예외처리를 통해서 프로그램이 죽는 것을 방지하려는 것

기본 문법

  • try : 에러 발생 가능성이 있는 코드 실행
    • 에러가 발생하면 그 지점 이후의 코드들은 실행되지 않는다
  • except : 에러 발생 시 (생략 가능, 여러개 사용 가능, 에러 처리하려면 필수)
  • else : 에러가 발생하지 않았을 경우 실행 (생략 가능, except 있어야 사용 가능)
  • finally : 에러가 발생해도, 발생하지 않아도 무조건 실행 (생략 가능)

에러 발생시키기

  • 일부러 에러를 발생시켜서 확인해야 하는 경우가 있을 수 있음

  • 그때 raise 사용

  • raise + 예외처리 이름

  • raise Exception("메세지") : 원하는 메세지 출력

  • try + raise + except

profile
개발자로서의 삶은 https://velog.io/@maxminos 에서 기록하고 있습니다 😀

0개의 댓글