예외 처리와 오류 관리
1. Error의 종류
모든 에러는 아래 공식문서에서 확인할 수 있습니다.
내장 예외1.1. 문법 에러(Syntax Error)
문법 에러는 파이썬 코드를 실행하기 전에 발생하는 에러로, 코드 작성 시 오타나 문법적인 오류가 있을 경우 발생합니다.
이 경우 파이썬 인터프리터는 해당 줄에서 에러가 발생했음을 알려주며, 발견된 오류의 위치와 종류를 알려줍니다.
1.2. 이름 에러(Name Error)
이름 에러는 정의되지 않은 변수나 함수를 호출했을 때 발생합니다.
이 경우 파이썬 인터프리터는 해당 변수나 함수를 찾을 수 없다는 메시지를 출력합니다.
1.3. 타입 에러(Type Error)
타입 에러는 서로 다른 타입의 변수 간 연산이나 함수 호출 시 발생합니다.
이 경우 파이썬 인터프리터는 해당 연산이나 함수 호출이 불가능하다는 메시지를 출력합니다.
1.4. 인덱스 에러(Index Error)
인덱스 에러는 리스트나 튜플 등의 시퀀스 타입에서 존재하지 않는 인덱스를 호출했을 때 발생합니다.
이 경우 파이썬 인터프리터는 해당 인덱스를 찾을 수 없다는 메시지를 출력합니다.
1.5. 키 에러(Key Error)
키 에러는 딕셔너리에서 존재하지 않는 키를 호출했을 때 발생합니다.
이 경우 파이썬 인터프리터는 해당 키를 찾을 수 없다는 메시지를 출력합니다.
1.6. 값 에러(ValueError)
값 에러는 내장 함수나 메서드의 인자로 전달된 값의 타입이나 값이 유효하지 않을 때 발생합니다.
이 경우 파이썬 인터프리터는 해당 값을 처리할 수 없다는 메시지를 출력합니다.
1.7. 제로 나누기 에러(ZeroDivisionError)
제로 나누기 에러는 0으로 나누기 연산을 수행할 때 발생합니다.
이 경우 파이썬 인터프리터는 해당 연산이 불가능하다는 메시지를 출력합니다.
1.8. 어트리뷰트 에러(Attribute Error)
어트리뷰트 에러는 객체에 존재하지 않는 속성이나 메서드를 호출했을 때 발생합니다.
이 경우 파이썬 인터프리터는 해당 속성이나 메서드를 찾을 수 없다는 메시지를 출력합니다.
1.9. 인자 개수 에러(TypeError)
인자 개수 에러는 함수나 메서드에 전달된 인자의 개수가 맞지 않을 때 발생합니다.
이 경우 파이썬 인터프리터는 해당 함수나 메서드에 전달된 인자의 개수가 맞지 않다는 메시지를 출력합니다.
2. python 예외처리
파이썬에서 예외(exception)란 프로그램이 실행 중 예기치 않은 상황이 발생하여 프로그램이 종료되는 것을 의미합니다.
예를 들어, 정수를 0으로 나누려고 시도하거나, 존재하지 않는 파일을 열려고 시도하는 등의 상황에서 예외가 발생할 수 있습니다.
이러한 예외 상황에서 프로그램이 강제 종료되는 것을 방지하고, 예외 상황을 처리하는 방법을 "예외 처리"라고 합니다.
🧐 google convention에서는 try와 except를 최소 단위로 사용하길 권고합니다. 이는 에러가 나는 정확한 위치를 파악하기 위함입니다.
2.1. 예외처리 방법 try except
파이썬에서는 try except 구문을 사용하여 예외 처리를 할 수 있습니다.
try:
# 예외가 발생할 가능성이 있는 코드
except:
# 예외 처리 코드
try:
# 예외가 발생할 가능성이 있는 코드
except:
# 예외 처리 코드
발생하는 에러를 한꺼번에 처리 할 수 있습니다.
예상되는 에러가 있다면 에러명을 함께 명시해주면 아래처럼 처리할 수 있습니다.
아래와 같은 코드도 가능합니다.
s = 1/0
에서 1/1
로 값을 바꿔 ZeroDivisionError
을 회피할 수 있도록 하였습니다.
그 아래에는 IndexError
를 발생시켰습니다.
이를 처리하는 로직이 없기 때문에 모든 오류를 한꺼번에 처리하는 except
로 이동하여 '오류가 났습니다!'를 출력합니다.