에러의 종류
1. 코드를 실행하기 전에 발생하는 오류
- 구문 오류(Syntax Error) : Python 문법에 맞지 않아 실행 자체가 되지 않는다.
2. 코드를 실행한 후에 발생하는 오류
- 예외(Exeption) / 런타임 오류(Runtime Error) : 문법에는 문제가 없지만 실행 중에 오류 발생
- IndexError : 리스트의 인덱스 범위를 넘어갈 때
- ValueError : 변환할 수 없는 문자나 숫자를 변환할 때
- NameError : 존재하지 않는 변수를 호출할 때
- AttributeError : 속성 이름이 잘못됐거나 없는 속성을 불러올 때
- ZeroDivisionError : 0으로 숫자를 나눌 때
- FileNotFoundError : 존재하지 않는 파일을 호출할 때
- Traceback 메시지 (역추적메시지) : 예외가 발생했을 때 오류의 위치, 종류, 내용을 명시해주는 것.
예외처리 : try ~ except ~
예외가 발생하면 프로그램이 아예 종료되니까, 예외가 발생하는 부분을 미리 예측하여 처리하는 과정이 필요하다.
- 예외가 발생할 수 있는 문장을 try에 작성.
- 오류 종류를 except에 작성하고, 예외처리 안내 메시지를 except 아래에 작성한다.
'''
~~ 기본구조 ~~
try:
예외가 발생할 수 있는 문장
except 오류 종류:
예외를 처리하는 문장
'''
# try~ except~ 예시
try:
num = int(input('정수 입력: '))
except ValueError:
print('정수가 아님! 정수를 입력해주세요!')
while True: # 무한 반복
try:
num = int(input('정수 입력: '))
break # 정수 입력시 반복문 탈출
except ValueError: # 예외 처리
print('정수가 아님!')
except 절에는 오류의 종류를 명시해야하지만, 경우에 따라서는 생략할 수도 있다.
만약 오류의 종류를 생략하면, 모든 오류에 대해 하나의 except를 실행한다.
# except에서 오류의 종류 생략하기
try:
x = int(input('정수 입력> '))
y = int(input('정수 입력> '))
print(x/y)
except:
print('0으로 나눌 수 없음!!')
예외처리 : as 키워드
시스템에서 출력하는 기본적인 오류 메시지로 예외를 처리하는 방법.
'''
~~ 기본구조 ~~
try:
예외 발생할 수 있는 문장
except 발생 오류 as 오류 메세지 변수:
예외 발생시 실행할 문장
'''
try:
color = ['purple', 'yellow', 'green', 'blue']
for x in color:
print(color.index(x))
print(color.index('orange'))
except ValueError as message:
print(message)
'''
예시의 리스트에는 'orange'가 없기 때문에 ValueError가 발생
-> as 키워드로 기본적인 오류 메시지를 출력하도록 설정
-> 'orange' is not in list 출력
'''
다중 예외 처리 : try ~ except ~ else
다수의 오류를 한번에 처리하는 방법.
try에서 경우를 확인하고 조건을 만족하는 except절을 출력한다.
만약 예외가 없으면 else절을 출력한다.
'''
~~ 기본구조 ~~
try:
예외가 발생할 수 있는 문장
except 오류종류1:
예외를 처리하는 문장
except 오류종류2:
예외를 처리하는 문장
else:
예외가 없는 경우에 실행 (else절은 생략 가능)
'''
# try에서 상황을 확인하고 첫번째 except 출력
try:
num = [1, 2, 3, 4]
print('START')
print(num[3]/0)
print(num[100])
print('END')
except NameError:
print("존재하지 않는 변수 호출")
except IndexError:
print("인덱스 에러 발생")
except ZeroDivisionError:
print("0으로 나눌 수 없음!")
# 예외가 없어서 else절 출력
try:
num = [1, 2, 3, 4]
for i in num:
print(i)
except NameError:
print("존재하지 않는 변수 호출")
except IndexError:
print("인덱스 에러 발생")
except ZeroDivisionError:
print("0으로 나눌 수 없음!")
else:
print("예외 없음! 성공적!!")
※ 코드 확인하기 → https://github.com/hjinn0813/python-start
GitHub - hjinn0813/python-start: 2024.06 study basic of python
2024.06 study basic of python. Contribute to hjinn0813/python-start development by creating an account on GitHub.
github.com
'💾 Backend > Python' 카테고리의 다른 글
Python 클래스 (0) | 2024.06.19 |
---|---|
Python 파일 입출력 (0) | 2024.06.19 |
Python 모듈 (import, random, math) (0) | 2024.06.18 |
Python 함수 (0) | 2024.06.17 |
Python 반복문 - while (0) | 2024.06.14 |