2024.03.20 7일차
예외
예외(Exception)는 프로그램 실행 중 발생할 수 있는 예상치 못한 문제 또는 오류 상황을 의미합니다. 예외가 발생하면 프로그램은 중단되기 때문에 이를 적절하게 처리하여 중단을 방지하거나 오류에 대한 정보를 사용자에게 제공해야 합니다.
3
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-2-29f9b6eaa904> in <cell line: 2>()
1 print(10//3)
----> 2 print(5/0) # 여기서부터 에러가 나기 때문에 아래로 안내려감
3 print(4/2)
ZeroDivisionError: division by zero
파이썬은 에러가 난 다음부터 아래 코드로 내려가지 않는다
예외 처리 기본 구조
try:
# 예외가 발생할 가능성이 있는 코드
except ExceptionType1: # 'ExceptionType1'에는 실제 예외 유형이 들어갑니다.
# ExceptionType1 예외가 발생했을 때 실행될 코드
except ExceptionType2: # 'ExceptionType2'에는 다른 예외 유형이 들어갑니다.
# ExceptionType2 예외가 발생했을 때 실행될 코드
# 추가적인 except 블록을 계속 추가할 수 있습니다.
else:
# try 블록에서 예외가 발생하지 않았을 때 실행될 코드
finally:
# 예외 발생 여부와 관계없이 항상 실행될 코드
예외가 발생할 가능성이 있느 코드를 try아래에 적어주고 except를 써서 실제 에러가 발생했을 경우의 유형을 적어준다
에러가 발생할 경우는 다음과 같다.
ValueError
- 잘못된 값을 함수나 연산에 제공할 때 발생합니다.
- 예) 숫자가 아닌 문자열을 int() 함수로 변환하려고 할 때 발생.
TypeError
- 올바르지 않은 유형의 객체를 연산에 사용하려 할 때 발생합니다.
- 예) 문자열과 숫자를 함께 더하려고 할 때 발생.
ZeroDivisionError
- 숫자를 0으로 나누려고 할 때 발생합니다.
IndexError
- 리스트, 튜플, 문자열 등의 시퀀스 유형에서 범위를 벗어난 인덱스에 접근하려 할 때 발생합니다.
- 예) 길이가 3인 리스트에 대해 4번째 요소에 접근하려고 할 때 발생.
KeyError
- 딕셔너리에서 존재하지 않는 키를 사용하여 값을 검색하려고 할 때 발생합니다.
AttributeError
- 객체에 없는 속성이나 메서드에 접근하려고 할 때 발생합니다.
FileNotFoundError
- 존재하지 않는 파일을 열려고 할 때 발생합니다.
ImportError
- 존재하지 않는 모듈을 가져오려고 할 때 또는 모듈 내에 해당 속성/함수가 없을 때 발생합니다.
NameError
- 정의되지 않은 변수나 함수를 사용하려고 할 때 발생합니다.
- 예) 프로그램에서 정의되지 않은 변수 x를 사용하려고 할 때 발생.
OverflowError
- 수치 연산 결과가 너무 커서 표현할 수 없을 때 발생합니다.
MemoryError
- 프로그램이 사용 가능한 모든 메모리를 소진했을 때 발생합니다.
때문에 print(5/0) 두번째 줄에서 에러가 발생하기 때문에 5을 0으로 나눌수가 없기때문에 'zerodivisionerror' 가 발생한다.
except 뒤에 zerodivisionerror' 그대로 넣어 준다음 출력값을 정해준 다음 돌리면 다음과 같이 나오게 된다
하지만 except뒤에 이름을 딱히 안적어도 알아서 적용이 된다.
3
0으로 나눌수 없어요
프로그램을 종료합니다.
인덱스의 순서가 5번이 없기 때문에 에러 발생
10
인덱스 지정이 올바르지 않습니다
프로그램을 종료합니다
10
오류를 모두 처리합니다
프로그램을 종료합니다
except 뒤에 아무것도 안쓰고 돌리게 되면 가장 첫번째 에러쪽에서 프로그램이 종료되게 된다.
10
list index out of range
프로그램을 종료합니다
except:만 사용: 하면 프로그램 종료나 키보드 중단과 같은 특수한 예외까지 처리할 수 있지만, 대부분의 상황에서 이렇게 예외 처리는 권장되지 않습니다.
except Exception as e:는 일반적인 예외만 처리하면서, 발생한 예외의 상세 정보에 접근할 수 있는 능력을 제공합니다. 이 형태를 사용하면 더 명시적이며 예외 처리가 더 예측 가능해집니다.
10
list index out of range
오류에 관계없이 무조건 실행되는 문장
프로그램을 종료합니다
Exception 클래스
Exception 클래스는 파이썬의 내장 예외 계층 구조에서 거의 모든 내장 예외의 기본 클래스입니다. 이 클래스는 사용자 정의 예외를 만들거나 특정 예외 유형을 잡기 위한 기본적인 인터페이스를 제공합니다.
에러가 발생했어요
raise 는 에러를 발생시키고 싶은곳에 써주는 것
짝수를 입력하세요: 5
예외가 발생: 짝수가 아닙니다
짝수를 입력하면 그대로 숫자가나오고, 홀수를 입력시키면 예외가 발생했다고하고 짝수가 아닙니다라는 문장이 나오게된다.
타입이 올바르지 않습니다
Error for age 17:나이 범위보다 어림
Error for age 60:나이 범위보다 큼
나이 범위 안에 포함
나이 범위 안에 포함
Error for age 52:나이 범위보다 큼
나이 범위 안에 포함