Real Late Starter
[Python] 예외 처리 본문
우리가 프로그래밍을 하면서 때때로 오류을 마주치게 된다. 오류를 해결하는 것이 가장 좋겠지만 오류를 해결하는데 너무 많은 시간을 쏟게된다면 효율적이지 않을 것이다.
오류는 두가지로 구분 할 수 있다.
1. 구문오류
- 해석 단계에서 발생
- 잘못된 명령을 입력해 발생한다.
2. 예외
- 실행 단계에서 발생
- 문법적인 문제는 없지만 실행 중에 예기치 않게 발생하는 오류를 말한다.
2-1) 예외 발생 시 해결 방법
A. if 문을 이용한 예외의 처리
- 정상적인 흐름을 제어할 경우에만 사용 가능
try ~ except 문 | 예외가 발생했을 때 처리 | ||
try ~ except ~ else 문 | 예외가 발생했을 때 처리 | 예외가 발생하지 않았을 때 | |
try ~ except ~ else ~ finally 문 | 예외가 발생했을 때 처리 | 예외가 발생하지 않았을 때 | 예외 발생과 상관없이 실행 |
B. try ~ except 문을 이용한 예외의 처리
try ~ except 문의 작동원리는 try 구문을 실행하다, 예외가 발생하면 except 구문을 실행하도록 하는 것입니다.
만약 예외가 발생한다면 try 블록의 코드는 실행되지 않습니다.
C. try ~ except ~ else 문을 이용한 예외의 처리
D. try ~ except ~ else ~ finally 문을 이용한 예외의 처리
3. 예외 객체
- 예외 객체는 코드를 실행 중 오류가 발생하면서 만들어진 것으로, 오류 발생과 관련한 정보를 가지고 있다.
객체의 타입은 value error이기 때문에 <class 'ValueError'> 라고 나온다.
3-1) 다중 except 문을 이용한 예외 객체에 따른 처리의 분기
try 문을 살펴보면, 입력된 값이 숫자 문자 형식이 아닐 경우 ValueError가 발생해 첫 번째 except문을 실행합니다.
y가 0일 경우에는 ZeroDivisionError가 발생하여 2번째 except 문이 실행됩니다.
4. 강제로 예외를 발생시키는 방법
- 특정 조건에서 예외 객체를 만들어 예외를 일으킬 수 있다.
4-1) raise 문을 이용한 강제 예외 발생
숫자가 아닌 값이 입력되었을 때는 raise문으로 인해 강제로 ValueError 예외 상황을 발생시킵니다. "숫자가 아닌 값이 입력되었습니다."를 ValueError() 생성자 함수의 인자로 전달합니다.
이 포스트는 SW Expert Academy(https://swexpertacademy.com/)에서 파이썬 프로그래밍기초(1)을 들으며 정리한 내용입니다.
'Python' 카테고리의 다른 글
[Python] 객체지향(Object Oriented Programming)의 이해 (0) | 2020.03.05 |
---|---|
[Python] Dictionary 값 value 로 정렬하기 (0) | 2020.03.04 |
[Python] 내장함수 (0) | 2020.03.03 |