예외(Exception)
: 코드를 실행하는 중 발생한 에러
: 숫자를 0으로 나누면 ZeroDivisionError 예외가 발생함
: 예외가 발생했을 때도 스크립트 실행을 중단하지 않고 계속 실행하게 해주는 예외 처리 방법
try:
실행할 코드
except:
예외가 발생하였을 때 처리하는 코드
- 예외가 발생하였을 때
- 예외가 발생하지 않았을 때
특정 예외만 처리하기
try:
실행할 코드
except 예외이름:
예외가 발생하였을 때 처리하는 코드
예외의 에러 메시지 받아오기
try:
실행할 코드
except 예외 as 변수:
예외가 발생하였을 때 처리하는 코드
: 예외가 여러 개 발생하더라도 먼저 발생한 예외의 처리 코드만 실행됨
: 또는 예외 중에서 높은 계층의 예외부터 처리됨. 기반클래스 → 파생클래스 순
: 모든 예외의 에러 메시지를 출력하고 싶다면 except에 Exception을 지정하고 as 뒤에 변수를 넣으면 됨
except Exception as e: # 모든 예외의 에러 메시지를 출력할 때는 Exception을 사용
print('예외가 발생하였습니다.', e)
else와 finally 사용하기
: else는 except 바로 다음에 와야 하며 except를 생략할 수 없음
try:
실행할 코드
except:
예외가 발생하였을 때 처리하는 코드
else:
예외가 발생하지 않았을 때 실행할 코드
: finally는 except와 else를 생략할 수 있음
try:
실행할 코드
except:
예외가 발생하였을 때 처리하는 코드
else:
예외가 발생하지 않았을 때 실행할 코드
finally:
예외 발생 여부와 상관없이 항상 실행할 코드
try 안에서 만든 변수는 try 바깥에서 사용할 수 있나요?
: try는 함수가 아니므로 스택 프레임을 만들지 않음
: 따라서 try 안에서 변수를 만들더라도 try 바깥에서 사용할 수 있음
: 물론 except, else, finally에서도 사용할 수 있음
예외 발생시키기
raise 예외('예외 메시지')
: raise로 예외를 발생시키면 raise 아래에 있는 코드는 실행되지 않고 바로 except로 넘어감
raise의 처리 과정
: raise를 사용하지만 함수 안에는 try except가 없는 상태
: 예외가 발생하더라도 현재 코드 블록에서 처리해줄 except가 없다면
except가 나올 때까지 계속 상위 코드 블록으로 올라감
: 만약 함수 바깥에도 처리해줄 except가 없다면 코드 실행은 중지되고 에러가 표시됨
현재 예외를 다시 발생 시키기
: except 안에서 raise를 사용하면 현재 예외를 다시 발생시킴(re-raise)
: raise만 사용하면 같은 예외를 상위 코드 블록으로 넘기지만
raise에 다른 예외를 정하고 에러 메시지를 넣을 수도 있음
assert로 예외 발생시키기
: 지정된 조건식이 거짓일 때 AssertionError 예외를 발생시키며 조건식이 참이면 ㄱ그냥 넘어감
: 보통 assert는 나와서는 안되는 조건을 검사할 때 사용함
assert 조건식
assert 조건식, 에러메시지
예외 만들기
class 예외이름(Exception):
def __init__(self):
super().__init__('에러 메시지')
'Python > python' 카테고리의 다른 글
Web site 경로를 따라가 데이터 찾기 (0) | 2020.11.06 |
---|---|
Python을 이용한 데이터 시각화 (0) | 2020.11.03 |
클래스 상속 사용하기 (0) | 2020.10.19 |
클래스 속성과 정적, 클래스 메서드 사용하기 (0) | 2020.10.19 |
클래스 (0) | 2020.10.19 |