1. 예외처리
1.1 예외처리란?
- 코드에서 실행중에 에러가 발생한 경우 에러를 처리하는 방법
- try, except, fianlly, raise를 사용한다.
1.2 Try, Except
1
2
3
ls = [1, 2, 3]
print(ls[2])
print('Done')
1
2
3
Done
- 에러가 발행해도 코드의 실행을 계속하고 싶을때 사용한다
1
2
3
4
5
6
try :
print(ls[3])
except Exception as e:
print('error')
print(e)
print('Done')
1
2
3
error
list index out of range
Done
- expect 뒤의 xception as e의 옵션을 주고, print(e)를 사용하여 어떠한 에러가 생성되었는지 출력하게 함
1.3 Finally
1
2
3
4
5
6
try :
1/0
except :
print('error')
finally:
print('Done')
1
2
error
Done
- try, except 구문 실행된 후 finally 구문이 실행
1.4 Raise
1
2
3
4
5
6
try :
1/0
except Exception as e:
print('error')
raise(e)
print('Done')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
error
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-6-f205cb4ffc4f> in <module>
3 except Exception as e:
4 print('error')
----> 5 raise(e)
6 print('Done')
<ipython-input-6-f205cb4ffc4f> in <module>
1 try :
----> 2 1/0
3 except Exception as e:
4 print('error')
5 raise(e)
ZeroDivisionError: division by zero
- 강제로 에러를 발생시키는 명령으로 함수나 클래스 등 예외 사항(에러)에 사용
1.5 에러 생성 실습
1
2
3
4
5
6
7
8
9
class LowNumber(Exception):
def __str__(self):
return 'number grater than 10'
def input_number(num):
if num <= 10:
raise LowNumber()
print(num)
1
input_number(12)
1
12
- 10이상의 숫자를 함수에 넣었기 때문에 에러없이 함수가 실행된다
1
input_number(9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
---------------------------------------------------------------------------
LowNumber Traceback (most recent call last)
<ipython-input-10-c257a8dbce24> in <module>
----> 1 input_number(9)
<ipython-input-8-c703241febf7> in input_number(num)
6 def input_number(num):
7 if num <= 10:
----> 8 raise LowNumber()
9 print(num)
LowNumber: number grater than 10
- LowNumber의 함수를 사용하여 10 이상의 숫자를 넣으라는 에러를 출력하는 함수 생성
- 실제 input_number의 함수를 사용할떄 10 이하의 숫자가 들어가오면 에러가 출력됨.