11-1 예외처리
- 구문 에러
구문에러: 문법상 맞지 않는 구문으로 작성하였을 때 소스코드를 실행하기 전에 발생하는 에러
print함수에 괄호()를 사용하지 않거나, print함수 뒤에 콜론(:)을 붙이거나, 따옴표를 맞추지 않았을 때 발생
<실행 결과>
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
- 예외
예외 : 소스코드 실행 중에 발생한 에러, 사용자의 잘못된 입력 등으로 인하여 발생되는 에러
print함수에서 대문자 P를 사용하거나, 서로 다른 형태의 데이터형(문자 + 숫자)을 더하여 발생한 에러
- 예외의 경우
정수를 0으로 나누는 경우
존재하지 않는 파일을 읽는 경우
정수 입력을 기다리는 코드가 실행되고 있을 때, 문자열을 입력하는 경우
- 파이썬에서 미리 정의된 예외
Exception : 모든 내장 예외의 기본
ArithmeticError : 수치 연산 관련 내장 예외
LookupError : 시퀀스 관련 내장 예외
EnvironmentError : FilelO와 같은 파이썬 외부 예외
- 예외 처리
try ~ exception ~ else ~ finally
예외 처리 구조
try:
명령문
except 예외 이름:
명령문
except (예외1, 예외2):
명령문
else:
예외가 발생하지 않을 경우, 실행할 명령문
finally:
예외 발생 유무에 상관없이 try이후 수행할 문장
예시)
- 대표적인 예외 사항
arithmeticError : 수와 관련된 문제가 발생하였을 때
AttributeError : 모듈, 클래스 등에서 잘못된 속성이 발생했을 때
EOFError : 파일 등에서 읽어 들일 데이터가 더 이상 없을 때
Exception : 대부분 예외에서 가장 상위 예외 처리가 발생했을 때
FileExistsError : 이미 존재하는 파일이나 폴더를 새로 생성할 때
FileNotFoundError : 존재하지 않는 파일이나 폴더를 오픈하려 했을 때
IndentationError : 문법에서 들여쓰기가 잘못되었을 때
IndexError : 잘못된 인덱스를 인덱싱할 때
IsADirectoryError : 파일을 위한 명령을 폴더에서 실행할 때
KeyboardInterruput : 강제종료 중인 CTLR_C가 입력되었을 때
KeyError : 잘못된 key를 인덱싱 했을 때
LookUpError : 잘못된 인덱스나 key를 인덱싱 했을 때
NameError : 잘못된 변수명을 사용했을 때
PermissionError : 명령의 실행권한이 없을 때
SystaxError : 구문오류가 발생했을 때
- else와 finally를 활용한 예외처리
else: 예외상황이 발생하면 except 구문을 실행, 예외상황이 발생하지 않으면 else구문 실행
finally : 예외 발생 여부와 상관없이 항상 실행할 명령문
예시) try ~ excpet ~ else ~ finally 구문
11-2 사용자 정의 예외
- 사용자 정의 예외
사용자 정의 제외 : 개발자가 의도적으로 예외를 발생시켜야 하는 경우
- raise 명령어
예외를 강제적으로 발생시킴
raise로 예외를 발생시키면 raise 아래에 있는 코드들이 실행되지 않고 바로 except로 넘어감
이때 except가 나올 때까지 계속 상위 코드 블록으로 올라가서 처리함
반드시 내장 클래스인 Exception을 상속받아 정의해야함
예시)
- 파일 예외처리
파일 입출력에 관해서 오류가 발생할 가능성이 매우 높음
파일을 읽고 쓸 때에는 반드시 파일 오류를 처리해 줄 수 있는 예외처리를 구현
EofError : 파일 등에서 읽어 들일 데이터가 더 이상 없을 때 오류 발생
FileExistsError : 이미 존재하는 파일이나 폴더를 새로 생성하려 할 때 오류 발생
FileNotFoundError : 존재하지 않는 파일이나 폴더를 오픈하려할 때 오류 발생
예시)
<실행 결과> * 파일이 없을 때
파일을 찾을 수 없습니다.
수행 완료
'공부 > 【Python】' 카테고리의 다른 글
【파이썬프로그래밍】 13주차- 모듈과 패키지 (0) | 2024.05.13 |
---|---|
【파이썬프로그래밍】 12주차- 객체지향과 클래스 (0) | 2024.05.13 |
【파이썬프로그래밍】 10주차- 함수 (0) | 2024.05.11 |
【파이썬프로그래밍】 9주차- 파일쓰기 (0) | 2024.05.11 |
【파이썬프로그래밍】 7주차-반복문 (0) | 2024.05.09 |