[TIL]Python.Exceptions

여주링·2020년 11월 26일
0

Python

목록 보기
14/15

Exceptions

Exception이란 의도하지 않은 에러가 일어나는 경우를 예외 상황을 말한다.

short_list = [1, 2, 3]

요소개 3개인 리스트로 만일 index[3]을 할 경우 IndexError 오류가 발생하게 된다.

처음부터 이러한 exception이 발생하지 않도록 코드를 구현하는 것이 가장 베스트지만 현실적으로 항상 가능한것이 아니다(유저의 input을 기반으로 어떠한 연산을 하게 될때 exception이 발생될 가능성이 높음)

보통 Exception이 발생시, 발생한 코드 위치에서 다음 코드들이 실행되지 않고 곧바로 프로그램이 종료된다. 하지만 exception이 발생해도 해당 프로세스가 종료하지 않고 다른 로직을 실행후 프로그램을 멈추지 않게 할 수 있다. 이를 exception handling이라고 한다.
Exception handling은 try except 구문을 사용해서 실행한다.

try: 
	문장1 
	문장2
	 ...
	 문장N

except Exception:
	exception이 났을 경우 실행할 예외 처리코드 
finally: 
	Exception 여부와 상관없이 항상 마지막에 실행되는 코드

위의 List예문에서 IndexError가 났을 경우 프로그램을 종료하는 대신 에러 메세지를 출력하고 -1을 리턴하게 할 수 있다.

def return_elem_or_minus_one(index): 
	short_list = [1, 2, 3]
	elem = 0 

	try:
		elem = short_list[index] 
		print("이 문장은 exception이 발생되면 실행되지 않습니다!")
	except IndexError: 
		print(f"이 문장은 Exception이 발생하면 실행 됩니다") 
		elem = -1 
	finally: 
		print("이 문장은 exception 발생 여부와 상관없이 무조건 실행됩니다!") 

	return elem 

Exception 은 여러 exception을 catch 할 수 있다.
앞서 본 코드 처럼 IndexError 처럼 특정한 exception을 지정할 수도 있고 Exception 처럼 모든 exception을 다 지정할 수도 있다.

except IndexError: 
	print(f"이 문장은 Exception이 발생하면 실행 됩니다") 
	elem = -1 
except Exception: 
	print(f"IndexError가 아닌 다른 종류의 Exception이 발생했습니다") 
	elem = -1

이런식으로 구체적으로 지정이 가능!!

try:
    (예외가 일어날 것 같은 코드, 즉 위험한 코드)
except:
    (예외가 있을 때 실행될 코드)
else:
    (예외가 없을 때 실행될 코드)
finally:
    (예외와 상관없이 무조건 실행될 코드)
profile
🌱Backend Developer👩‍💻

0개의 댓글