rueki

예외 처리 (Exception) 본문

python

예외 처리 (Exception)

륵기 2020. 5. 19. 17:56
728x90
반응형

예외처리

 

예외처리라 함은 한 줄로 요약하면 아래와 같다.

오류가 발생했을 때 프로그램을 중단하지 않고

예외에 대한 적절한 처리를 해서 프로그램을 계속 실행시기는 것이다.

 

 

간단한 예제를 통해서 이해를 해보자.

10을 0으로 나누는 것을 코드로 작성했을 때 어떤 결과가 나올까?

위에서 밑줄로 표시한 것이 수많은 Exception의 예시 중 하나이며 

파이썬의 예외처리 기본 문법은 try ~ except 문을 사용한다.

 

첫 번째 예시로 ZeroDivisionError를 처리해보자.

def my_divide():
	try:
    	x = input('분자의 숫자를 입력하세요~')
	    y = input('분모의 숫자를 입력하세요~')
	    return int(x)/ int(y)
	except ZeroDivisionError:
	    return '나누기를 할 수 없습니다'
print(my_divide())

 

그 다음에 알아볼 예외처리 구조는 try ~ except ~ else문이다.

이 구조는 어떤 로직을 수행할 때 오류상황이 아닐 경우에만 어떤 작업을 수행하는 코드를 작성해야 할 때가 있다.

 

Try:

    실행할 코드 블록 // 반드시 수행이 되어야하는 중요한 코드

Except :

    예외처리 할 코드 블록        

Else:

    Except 절을 만나지 않았을경우 실행하는 코드 블록        

    // try 이후의 다른 코드들 동작

    // try except 사이의 코드가 없다는 확인하고 넘어갈 있다.

 

 

다른 구조로는 try ~ except ~ finally 구조가 있다.

이는 오류 발생 유무와 상관없이 어떤 코드를 무조건 실행시킬 때 이 구문을 활용한다.

즉, 무조건 실행시키려는 코드는 finally 부분에 작성한다.

 

try:
	print('안녕하세요')
except: # try문에 대한 에러에 대한 예외 처리
    print('예외가 발생했습니다.')
finally: # 무조건 실행되는 코드
    print('저는 무조건 실행됩니다.')

이를 실행시킬 때, finally 안에 있는 '저는 무조건 실행됩니다'가 출력되는 것을 확인할 수가 있다.

 

 

파이썬에서는 여러가지 예외에 대해서 처리하게끔 에러를 정의해놨는데, 앞에서 본 ZeroDivisionError 외에 여러가지가 있으며 이번 예로는 KeyboardInterrupt에 대해서도 살펴보도록 하겠다.

 

def my_divide():
	try:
	    x = input('분자의 숫자를 입력하세요~')
	    y = input('분모의 숫자를 입력하세요~')
	    return int(x)/ int(y)
	except ZeroDivisionError: #파이썬에서 정의한 예외
	    return '0으로 나누기를 할 수 없습니다'
	except KeyboardInterrupt: #파이썬에서 정의한 예외
	    return : '사용자에 의해서 프로그램 종료'
	excpet:
        return '나누기를 할 수 없습니다.'

사용자 정의로 예외를 처리할 수 도 있는데 구조는 아래와 같다.

Def 함수명:
	실행코드
If 조건:
	Raise Exception ("예외가 발생 했습니다.")
Else:
	Return 변수명

이 구조에서 봐야할 사항은 raise Exception 이다. 여기서 사용자가 정의해서 예외처리가 가능하다.

이번 시간에는 파이썬에서의 예외처리 방법을 알아봤으며, 추가적인 내용은

파이썬 공식문서에서 확인할 수가 있다.

https://docs.python.org/3/library/exceptions.html

728x90
반응형
Comments