예외처리
- try, except 키워드 사용
! try : 예외가 발생할 수도 있는 코드 작성
! except : 해당 코드 블록에서 예외 발생 시, 프로그램이 종료되지 않고, except 블록 실행
- 예외 상황 발생 시, 적절한 대처를 위해 필요하다
- 함수 작성시 발생할 수 있는 에러에 대해 처리하는 것이 필요
### try구문에서 에러가 발생하면 except로 점프
### try구문에서 에러가 발생하지 않으면 except 점프하고 print 수행
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | nums = [1, 2, 3] pos = 5 try: print nums[pos] print nums[0] except: print 'error occurred' print 'always print' <<<<< 실행결과 >>>>> error occurred always print | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | nums = [1, 2, 3] pos = 4 try: print nums[pos] print 1, 2, 3 print 4, 5, 6 except: print 'need a index between 0 and len(nums)-1 but got', pos print 'always print' <<<<< 실행결과 >>>>> need a index between 0 and len(nums)-1 but got 4 always print | cs |
finally
- 예외처리 코드에서 항상 마지막에 위치
- 예외발생 여부에 관계없이 항상 실행해야 할 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | nums = [1, 2, 3] pos = 4 try: print nums[pos] except: print 'need a index between 0 and len(nums) - 1', 'but got', pos finally: print 'task done' print 'always' <<<<< 실행결과 >>>>> need a index between 0 and len(nums) - 1 but got 4 task done always | cs |
예외 처리 세분화
- Exception으로 보편적으로 다 처리할 수 있다.
- 세분화하여 처리하면 각 예외 상황에 따라 다른 처리를 할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | nums = [0, 1, 2, 3] #pos1 = 2 ###ZeroDivisionError 에러 pos1 = 5 ###IndexError 에러 pos2 = 0 try: print nums[pos1] / nums[pos2] except IndexError as err: print 'need a index between 0 and len(nums)-1', 'but got', pos print str(err) except ZeroDivisionError as other: #ZeroDivisionError ###에러 타입을 넣어줄 수 있다 print 'something else broke', other except Exception as e: print e finally: print 'task done' print nums[0] <<<<< 실행결과 >>>>> need a index between 0 and len(nums)-1 but got 1 list index out of range task done 0 | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | nums = [1, 2, 3, 5, 6] print nums.index(3) print nums.index(5) ###없는 값을 주게 되면 에러를 발생 def get_index(nums, value): try: index = nums.index(value) return index except: return -1 print get_index(nums, 4) <<<<< 실행결과 >>>>> 2 3 -1 | cs |
반응형
'Python > Python Basic' 카테고리의 다른 글
1. Series (0) | 2017.05.30 |
---|---|
Day5) 4. import/from import (0) | 2017.05.25 |
Day5) 2. filter, map, reduce (0) | 2017.05.25 |
Day5) 1. Lambda 함수 (0) | 2017.05.25 |
Day4) 4. 1st class citizen(일등 시민) (0) | 2017.05.25 |