본문 바로가기

Python/Python Basic

Day5) 3. 예외처리(try-except, finally), 예외처리세분화

예외처리

- 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 = [123]
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 = [123]
pos = 4
 
try:
    print nums[pos]
    print 123
    print 456
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 = [123]
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 = [0123]
#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 = [12356]
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