Real Late Starter

[Python] 예외 처리 본문

Python

[Python] 예외 처리

조슈아박 2020. 3. 3. 15:20

 

 

우리가 프로그래밍을 하면서 때때로 오류을 마주치게 된다. 오류를 해결하는 것이 가장 좋겠지만 오류를 해결하는데 너무 많은 시간을 쏟게된다면 효율적이지 않을 것이다.

 

오류는 두가지로 구분 할 수 있다.

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)을 들으며 정리한 내용입니다.