오류의 종류
구문 오류 (syntax error)
- 프로그램 실행 전에 발생하는 오류
- 괄호의 개수, 들여쓰기 등 프로그래밍 문법을 지키지 않은 경우에 주로 발생
- SyntaxError 메시지 출력
- 구문 오류는 해결하지 않으면 프로그램이 실행되지 않기 때문에 코드를 수정해야 함
예외
- 런타임 오류
- 프로그램 실행 중에 발생하는 오류
- 프로그램이 실행된 다음 실행 중에 발생하며, 비정상적으로 프로그램이 종료
- 구문 오류와 같이 코드를 수정하거나, 예외처리 등을 사용해 문제 해결
예외가 발생할 수 있는 코드
- 정수를 입력하지 않으면? -> ValueError 발생
예외 처리
- 예외를 해결하는 모든 방법
- 구문 오류는 실행조차 되지 않기 때문에 예외처리를 할 수 없음
기본 예외 처리
- 조건문을 사용한 예외 처리 방법
- 문자열 객체의 isdigit() 메서드를 사용해 숫자로만 구성된 글자인지를 확인
- 예외가 발생하는 상황이나 조건을 고려하여 프로그램을 작성하는 습관이 필요
try except 구문
- 예외가 발생할 상황을 예측하여 모두 조건문으로 처리하는 일은 매우 어렵고, 프로그래밍 언어의 구조적인 문제로 조건문만으로 예외를 처리할 수 없는 경우도 있음
- try except 기본 구조
- try except 구문을 사용하면 어떤 상황에 예외가 발생하는지 완벽하게 이해하고 있지 않아도 프로그램이 강제로 종료되는 상황을 방지할 수 있음
pass 키워드
- 프로그램 흐름 상 중요한 코드가 아니라 예외가 발생할 떄 일단 처리할 목적으로 사용
- try except 구문과 pass 키워드 조합하기
try except else 구문
- 예외가 발생하지 않았을 때 실행할 코드를 지정할 때 사용
- 기본 구조
- 예외가 발생할 가능성이 있는 코드만 try 구문 내부에 넣고 나머지는 모두 else 구문 내부에서 처리
- Python, Ruby 등의 언어에서만 지원하는 기능
finally 구문
- 예외 발생 여부와 관계없이 무조건 실행할 코드를 지정
- try + except + esle + finally
- close() 메서드 : 파일 입출력 스트림 닫기
try:
file = open('info.txt', 'r')
int('abc')
file.close()
except Exception as e:
print(e)
invalid literal for int() with base 10: 'abc'
try:
file = open('info.txt', 'r')
int('abc')
file.close()
except Exception as e:
print(e)
print('file.closed:', file closed)
file.closed: True
예외 처리 구문 작성 규칙
- try는 단독으로 사용할 수 없으며, 반드시 except 또는 finally와 함께 사용해야 함
- else는 반드시 except 뒤에 작성해야 함
try, except, else, finally 조합
- try + except 구문
- try + except + else 구문
- try + except + finally 구문
- try + except + else + finally 구문
- try + finally 구문