본문 바로가기

Study/Python

#10_Python_2예외처리:예외 객체, 강제로 예외를 발생시키는 방법

01 구문오류와 예외
02 예외 처리 방법
03 예외 객체
04 강제로 예외를 발생시키는 방법


#03 예외 객체

코드를 실행 중 오류가 발생하면 만들어진 것으로,

오류 발생과 관련한 정보를 가지고 있음

 

 

 

 📍예외객체를 참조해 예외객체의 타입과 오류 메세지를 확인하는 방법

 

try문에서 예외상황이 발생되면 가장 가까이에 있는 except문이 실행

출처 : swea

except Exception as ex # -> 에러의 한 종류!
print("{0}: {1}".format(type(ex), ex))
# -> ex는 발생한 에러의 이름을 받아오는 함수이므로
# 발생한 에러의 타입과 그 에러를 출력함

출처 : swea

 

 

 

 

 📍다중 except 문 사용해서 예외 객체에 따른 처리를 분기 시켜주기

 

01_except ValueError as ve

숫자 값이 아닐때 에러

출처 : swea

 

출처 : swea

 

 

02_except ZeroDivisionError as ze

분모가 0일때 에러

result = x/y # 에서 y에 0이 저장되어 있을 경우
# 제수가 0이 되어 ZeroDivisionError 발생

출처 : swea

 

출처 : swea

 

 

03_그 외 

출처 : swea

 

04_문제없이 잘 실행 되었을 경우

출처 : swea

 


#04 강제로 예외를 발생시키는 방법

런 타임에 의해서가 아니라 특정 조건에서 예외 객체를 만들어 예외를 일으킬 수 있다.

이때 예외 객체의 오류 메시지를 전달할 수 있다.

 

📍raise문을 이용한 강제 예외 발생

isdigit() #2행에서는 w와 h가 숫자 문자 형식의 문자열인지 검사
# 3행에서는 숫자 문자 형식의 문자열일 경우 int()함수로
# 		  정수 변환 후 곱셈 연산의 결과 반환

# 4~5행의 경우 raise 문을 이용해 강제로 ValueError 예외 상황을 일으킴

# 12행의 try는 두 변수의 값을 calc_area 함수에 인자로 전달해
# 면적 값을 구해 변수 area에 저장
# 인자로 전달된 값이 숫자 형식의 문자열이 아닐 경우 ValueError 예외를 일으킴

 

 

01_ValueError 예외 발생 시

03_else문 실행

 

except ValueError as ve: # ValueError 예외상황 발생 시

except Exception as ex: # ValueError 이외의 예외상황 발생 시
# 예외 객체를 Exception as ex 코드를 사용해 except문의 블록에서 ex로 참조

else # try문에서 예외가 발생하지 않으면 폭, 높이, 면적이 값을 출력

finally # 예외 발생 여부와는 상관 없이 실행 됨