구문오류 : 해석 단계에서 발생, 잘못된 명령을 입력해 발생함
=> 오타나 문법적으로 필수적인 요소가 빠지진 않았는지 찾아 재코딩해야함
예외(exception) : 실행 단계에서 발생, 실행중 예기치 않게 발생함
=> 인덱스에러, 타입에러, 벨류에러 등등
예외의 발생시 해결방법
if 문을 이용한 예외의 처리 |
try~except문을 이용한 예외의 처리 |
try~except~else 문을 이용한 예외의 처리 |
try~excpet ~else~finally문을 이용한 예외의 처리 |
if 문을 이용한 예외의 처리
1. 정수입력 만을 받고싶을때 isdigit() 함수를 이용해 확인해서 체크 정수라면 True를 리턴하고 그외의 값이라면 False를 리턴 |
예외 발생시 해결 방법
try~except문 | 예외가 발생했을때 처리 | ||
try ~ except~ else문 | 예외가 발생했을때 처리 | 예외가 발생하지 않았을때 처리 | |
try~excpet~else~finally문 | 예외가 발생했을때 처리 | 예외가 발생하지 않았을때 처리 | 예외 발생과 상관없이 실행 |
try : 명령문 except : 예외 발생시 실행 else : 예외가 발생하지 않는 경우 실행 finally : 예외가 발생하든 않하든 실행 |
예외 객체 : 코드를 실행중 오류가 발생하면 만들어진 것으로, 오류발생과 관련한 정보를 가지고 있음
try : 명령문 except Exception as ex : 예외 발생시 실행 print(ex) #예외상황을 객체에 저장해서 돌려줌 |
try : 명령문 except ValueError as ve : 벨류에러 발생시 실행 except ZeroDivisionError as ze : 제수가 0일때 실행 except Exception as ex : 위의 예외상황이 아닐때 실행 #여러 except문을 이용한 예외 객체에 따른 처리의 분기 |
강제 예외 발생 : 특정 조건에서 예외 객체를 만들어 예외를 일으킬 수 있음
def func() if 조건문 체크 : 값리턴 else : raise ValueError("숫자가 아닌 값이 입력되었습니다.") # raise 문을 이용해 강제로 ValueError 예외 상황을 일으킴 |
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
29
30
31
|
def input_index():
num = 0
try:
num = int(input("인덱스를 사용할 숫자를 입력하세요: "))
except ValueError as exception:
raise exception
else:
return num
def print_in_bounds(lit, index):
value = 0
try:
value = lit[index]
except IndexError as exception:
print("{0} {1}".format(type(exception), exception))
index = len(lit)-1
print("인덱스는 0~ {0}까지 사용할 수 있습니다.".format(index))
value = lit[index]
finally:
print("[{0}]: {1}".format(index, value))
data_list = list(range(1, 11))
print("data_list: {0}".format(data_list))
try:
num = input_index()
print_in_bounds(data_list, num)
except ValueError as exception:
print("{0}, {1}".format(type(exception),exception))
except Exception as exception:
print(exception)
|
'프로그래밍언어 > Python' 카테고리의 다른 글
파이썬 - 자료구조(셋,딕셔너리) (0) | 2020.01.22 |
---|---|
파이썬 - 모듈과 패키지 (0) | 2020.01.20 |
파이썬 - 내장함수 (0) | 2020.01.18 |
파이썬 - 함수의 기초 (0) | 2020.01.17 |
파이썬 - 흐름과 제어(반복) (0) | 2020.01.16 |
댓글