0%

예외처리

TRY, EXCEPT

에러가 발생해도 코드의 실행을 계속 하고 싶을 때 사용합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ls = [1,2,3]

# try구문을 실행
try:
print(ls[3])
# 오류가 발생해도 코드의 실행을 마치고 e라는 변수에 오류 메세지를 담습니다.
except Exception as e:
print("error")
print(e)
print("Done!")

# error
# name 'ls' is not defined
# Done!

FINALLY

try, except 구문 실행된후 finally 구문이 실행됩니다.

1
2
3
4
5
6
7
8
9
try:
1/0
except:
print("error")
finally:
print("Done!")

# error
# Done!

코딩 실행 중간에 에러가 발생하면 변수안에 계속 데이터를 가지고 있고, 이는 낭비입니다.
때문에 try던 except건 간에 어쨋든 "실행 되면 finally 변수안에 데이터 지워줘" 라고 할때 사용합니다.

RAISE

강제로 에러를 발생시키는 명령입니다.

1
2
3
4
5
6
7
8

try:
1/0
except Exception as e:
print("error")
raise(e)

print("Done!")

except때문에 코드 실행이 완료 되어야 하지만 raise()떄문에 강제로 에러가 발생됩니다.

에러 메세지 생성

"Number grater than 10"
10이상의 숫자가 입력되어야 한다는 에러 메세지를 만들어보면,

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
28
#Exception 이라는 클래스를 상속 
class Lownumber(Exception):

def __str__(self): #에러 메세지 오버라이팅
return "Number grater than 10"

def input_number(num):
if num <= 10:
raise Lownumber() #Lownumber 클래스를 사용
print(num)

input_number(12)
# 12

input_number(8)
# 에러메세지 출력
# ---------------------------------------------------------------------------
#Lownumber Traceback (most recent call last)
#<ipython-input-19-8684a0e33c0b> in <module>
#----> 1 input_number(8)

#<ipython-input-17-bf4895dc7d57> in input_number(num)
# 1 def input_number(num):
# 2 if num <= 10:
#----> 3 raise Lownumber() #Lownumber 클래스를 사용
# 4 print("10")

#Lownumber: Number grater than 10