rueki
예외 처리 (Exception) 본문
예외처리
예외처리라 함은 한 줄로 요약하면 아래와 같다.
오류가 발생했을 때 프로그램을 중단하지 않고
예외에 대한 적절한 처리를 해서 프로그램을 계속 실행시기는 것이다.
간단한 예제를 통해서 이해를 해보자.
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 이다. 여기서 사용자가 정의해서 예외처리가 가능하다.
이번 시간에는 파이썬에서의 예외처리 방법을 알아봤으며, 추가적인 내용은
파이썬 공식문서에서 확인할 수가 있다.
'python' 카테고리의 다른 글
Numpy - BroadCasting (0) | 2020.06.01 |
---|---|
행렬 및 리스트 값 0으로 바꿀 때의 방법 비교하기 (0) | 2020.05.26 |
day5-4. 파일입출력 기본 - 파일 쓰기 (0) | 2020.01.12 |
day5-3. 파일 입출력 기본 - 파일 입력 (0) | 2020.01.10 |
day5-2. map 함수, reduce 함수 (0) | 2020.01.09 |